{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 正则化\n",
    "\n",
    "机器学习的问题中，**过拟合**是一个很常见的问题。过拟合指的是智能拟合训练数据，但不能很好地拟合不包含在训练数据中的其他数据的状态。机器学习的目的是提高泛化能力，即便是没有包含在训练数据里的未观测数据，也希望模型可以进行正确的识别。我们可以制作复杂的、表现力强的模型，但是相应地，抑制过拟合的技巧也很重要。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 过拟合\n",
    "发生过拟合的原因，主要有以下两个。\n",
    "* 模型拥有大量参数、表现力强。\n",
    "* 训练数据少。\n",
    "\n",
    "我们故意满足这两个条件，制造过拟合现象。为此，从 MNIST 数据集原本的60000个训练数据中只选定3000个，并且，为了增加网络的复杂度，使用7层网络（每层有100个神经元，激活函数为 ReLU）。实验代码如下。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch:0, train acc:0.05333333333333334, test acc:0.0794\n",
      "epoch:1, train acc:0.07, test acc:0.0827\n",
      "epoch:2, train acc:0.08333333333333333, test acc:0.0977\n",
      "epoch:3, train acc:0.14333333333333334, test acc:0.1147\n",
      "epoch:4, train acc:0.17, test acc:0.1307\n",
      "epoch:5, train acc:0.18333333333333332, test acc:0.1436\n",
      "epoch:6, train acc:0.21, test acc:0.1591\n",
      "epoch:7, train acc:0.24333333333333335, test acc:0.1767\n",
      "epoch:8, train acc:0.26666666666666666, test acc:0.1984\n",
      "epoch:9, train acc:0.2966666666666667, test acc:0.2094\n",
      "epoch:10, train acc:0.3233333333333333, test acc:0.2246\n",
      "epoch:11, train acc:0.35, test acc:0.245\n",
      "epoch:12, train acc:0.4, test acc:0.2847\n",
      "epoch:13, train acc:0.4533333333333333, test acc:0.313\n",
      "epoch:14, train acc:0.41333333333333333, test acc:0.299\n",
      "epoch:15, train acc:0.42333333333333334, test acc:0.3108\n",
      "epoch:16, train acc:0.4266666666666667, test acc:0.3214\n",
      "epoch:17, train acc:0.45666666666666667, test acc:0.335\n",
      "epoch:18, train acc:0.48, test acc:0.3695\n",
      "epoch:19, train acc:0.5033333333333333, test acc:0.3828\n",
      "epoch:20, train acc:0.52, test acc:0.3823\n",
      "epoch:21, train acc:0.5266666666666666, test acc:0.3922\n",
      "epoch:22, train acc:0.5266666666666666, test acc:0.3949\n",
      "epoch:23, train acc:0.5533333333333333, test acc:0.4108\n",
      "epoch:24, train acc:0.5566666666666666, test acc:0.4277\n",
      "epoch:25, train acc:0.5733333333333334, test acc:0.4371\n",
      "epoch:26, train acc:0.5766666666666667, test acc:0.4409\n",
      "epoch:27, train acc:0.58, test acc:0.4492\n",
      "epoch:28, train acc:0.6366666666666667, test acc:0.4707\n",
      "epoch:29, train acc:0.6633333333333333, test acc:0.4938\n",
      "epoch:30, train acc:0.6766666666666666, test acc:0.511\n",
      "epoch:31, train acc:0.7133333333333334, test acc:0.5313\n",
      "epoch:32, train acc:0.7333333333333333, test acc:0.5389\n",
      "epoch:33, train acc:0.7, test acc:0.5419\n",
      "epoch:34, train acc:0.73, test acc:0.5509\n",
      "epoch:35, train acc:0.7666666666666667, test acc:0.5773\n",
      "epoch:36, train acc:0.77, test acc:0.5822\n",
      "epoch:37, train acc:0.7766666666666666, test acc:0.593\n",
      "epoch:38, train acc:0.7766666666666666, test acc:0.5898\n",
      "epoch:39, train acc:0.78, test acc:0.598\n",
      "epoch:40, train acc:0.7933333333333333, test acc:0.612\n",
      "epoch:41, train acc:0.8033333333333333, test acc:0.6149\n",
      "epoch:42, train acc:0.8166666666666667, test acc:0.6313\n",
      "epoch:43, train acc:0.8166666666666667, test acc:0.6289\n",
      "epoch:44, train acc:0.8366666666666667, test acc:0.6336\n",
      "epoch:45, train acc:0.8466666666666667, test acc:0.6461\n",
      "epoch:46, train acc:0.84, test acc:0.6444\n",
      "epoch:47, train acc:0.8633333333333333, test acc:0.6507\n",
      "epoch:48, train acc:0.8533333333333334, test acc:0.651\n",
      "epoch:49, train acc:0.8566666666666667, test acc:0.6628\n",
      "epoch:50, train acc:0.8833333333333333, test acc:0.6703\n",
      "epoch:51, train acc:0.9, test acc:0.669\n",
      "epoch:52, train acc:0.88, test acc:0.6733\n",
      "epoch:53, train acc:0.8866666666666667, test acc:0.6676\n",
      "epoch:54, train acc:0.89, test acc:0.6662\n",
      "epoch:55, train acc:0.91, test acc:0.6759\n",
      "epoch:56, train acc:0.9166666666666666, test acc:0.6956\n",
      "epoch:57, train acc:0.9033333333333333, test acc:0.6868\n",
      "epoch:58, train acc:0.9233333333333333, test acc:0.6985\n",
      "epoch:59, train acc:0.93, test acc:0.6952\n",
      "epoch:60, train acc:0.91, test acc:0.6901\n",
      "epoch:61, train acc:0.9266666666666666, test acc:0.6951\n",
      "epoch:62, train acc:0.9266666666666666, test acc:0.7094\n",
      "epoch:63, train acc:0.9333333333333333, test acc:0.7038\n",
      "epoch:64, train acc:0.9266666666666666, test acc:0.7048\n",
      "epoch:65, train acc:0.94, test acc:0.7089\n",
      "epoch:66, train acc:0.9466666666666667, test acc:0.7081\n",
      "epoch:67, train acc:0.9333333333333333, test acc:0.6983\n",
      "epoch:68, train acc:0.9366666666666666, test acc:0.7011\n",
      "epoch:69, train acc:0.9333333333333333, test acc:0.7067\n",
      "epoch:70, train acc:0.94, test acc:0.7109\n",
      "epoch:71, train acc:0.9533333333333334, test acc:0.7071\n",
      "epoch:72, train acc:0.96, test acc:0.7183\n",
      "epoch:73, train acc:0.9566666666666667, test acc:0.7188\n",
      "epoch:74, train acc:0.96, test acc:0.7088\n",
      "epoch:75, train acc:0.9533333333333334, test acc:0.719\n",
      "epoch:76, train acc:0.96, test acc:0.7257\n",
      "epoch:77, train acc:0.95, test acc:0.7177\n",
      "epoch:78, train acc:0.9533333333333334, test acc:0.7141\n",
      "epoch:79, train acc:0.97, test acc:0.7272\n",
      "epoch:80, train acc:0.9733333333333334, test acc:0.7249\n",
      "epoch:81, train acc:0.9833333333333333, test acc:0.7278\n",
      "epoch:82, train acc:0.9766666666666667, test acc:0.7254\n",
      "epoch:83, train acc:0.9733333333333334, test acc:0.73\n",
      "epoch:84, train acc:0.97, test acc:0.7216\n",
      "epoch:85, train acc:0.9833333333333333, test acc:0.725\n",
      "epoch:86, train acc:0.9866666666666667, test acc:0.7264\n",
      "epoch:87, train acc:0.9733333333333334, test acc:0.723\n",
      "epoch:88, train acc:0.9766666666666667, test acc:0.7217\n",
      "epoch:89, train acc:0.98, test acc:0.7309\n",
      "epoch:90, train acc:0.9833333333333333, test acc:0.7276\n",
      "epoch:91, train acc:0.9833333333333333, test acc:0.7254\n",
      "epoch:92, train acc:0.9866666666666667, test acc:0.7305\n",
      "epoch:93, train acc:0.9833333333333333, test acc:0.7246\n",
      "epoch:94, train acc:0.99, test acc:0.7314\n",
      "epoch:95, train acc:0.9866666666666667, test acc:0.7297\n",
      "epoch:96, train acc:0.9933333333333333, test acc:0.731\n",
      "epoch:97, train acc:0.9933333333333333, test acc:0.7322\n",
      "epoch:98, train acc:0.9933333333333333, test acc:0.7301\n",
      "epoch:99, train acc:0.9966666666666667, test acc:0.7345\n",
      "epoch:100, train acc:0.9933333333333333, test acc:0.7312\n",
      "epoch:101, train acc:0.9933333333333333, test acc:0.734\n",
      "epoch:102, train acc:0.9933333333333333, test acc:0.7371\n",
      "epoch:103, train acc:0.99, test acc:0.7368\n",
      "epoch:104, train acc:0.9933333333333333, test acc:0.7363\n",
      "epoch:105, train acc:0.9933333333333333, test acc:0.7402\n",
      "epoch:106, train acc:0.9966666666666667, test acc:0.7363\n",
      "epoch:107, train acc:0.9966666666666667, test acc:0.7355\n",
      "epoch:108, train acc:0.9966666666666667, test acc:0.737\n",
      "epoch:109, train acc:0.9966666666666667, test acc:0.7372\n",
      "epoch:110, train acc:0.9966666666666667, test acc:0.7378\n",
      "epoch:111, train acc:0.99, test acc:0.7356\n",
      "epoch:112, train acc:0.9966666666666667, test acc:0.7362\n",
      "epoch:113, train acc:1.0, test acc:0.7409\n",
      "epoch:114, train acc:1.0, test acc:0.7416\n",
      "epoch:115, train acc:0.9966666666666667, test acc:0.7388\n",
      "epoch:116, train acc:0.9966666666666667, test acc:0.7408\n",
      "epoch:117, train acc:0.9966666666666667, test acc:0.7382\n",
      "epoch:118, train acc:1.0, test acc:0.7386\n",
      "epoch:119, train acc:1.0, test acc:0.7419\n",
      "epoch:120, train acc:0.9966666666666667, test acc:0.7417\n",
      "epoch:121, train acc:1.0, test acc:0.7415\n",
      "epoch:122, train acc:0.9966666666666667, test acc:0.7424\n",
      "epoch:123, train acc:0.9966666666666667, test acc:0.7425\n",
      "epoch:124, train acc:1.0, test acc:0.7406\n",
      "epoch:125, train acc:1.0, test acc:0.7467\n",
      "epoch:126, train acc:1.0, test acc:0.7435\n",
      "epoch:127, train acc:1.0, test acc:0.7407\n",
      "epoch:128, train acc:1.0, test acc:0.7436\n",
      "epoch:129, train acc:1.0, test acc:0.7426\n",
      "epoch:130, train acc:1.0, test acc:0.7426\n",
      "epoch:131, train acc:1.0, test acc:0.7408\n",
      "epoch:132, train acc:1.0, test acc:0.7441\n",
      "epoch:133, train acc:1.0, test acc:0.7416\n",
      "epoch:134, train acc:1.0, test acc:0.7456\n",
      "epoch:135, train acc:1.0, test acc:0.7452\n",
      "epoch:136, train acc:1.0, test acc:0.7412\n",
      "epoch:137, train acc:1.0, test acc:0.7427\n",
      "epoch:138, train acc:1.0, test acc:0.7447\n",
      "epoch:139, train acc:1.0, test acc:0.746\n",
      "epoch:140, train acc:1.0, test acc:0.7429\n",
      "epoch:141, train acc:1.0, test acc:0.746\n",
      "epoch:142, train acc:1.0, test acc:0.7473\n",
      "epoch:143, train acc:1.0, test acc:0.7457\n",
      "epoch:144, train acc:1.0, test acc:0.7444\n",
      "epoch:145, train acc:1.0, test acc:0.7458\n",
      "epoch:146, train acc:1.0, test acc:0.7459\n",
      "epoch:147, train acc:1.0, test acc:0.7475\n",
      "epoch:148, train acc:1.0, test acc:0.7475\n",
      "epoch:149, train acc:1.0, test acc:0.7467\n",
      "epoch:150, train acc:1.0, test acc:0.7467\n",
      "epoch:151, train acc:1.0, test acc:0.7471\n",
      "epoch:152, train acc:1.0, test acc:0.7466\n",
      "epoch:153, train acc:1.0, test acc:0.7463\n",
      "epoch:154, train acc:1.0, test acc:0.7466\n",
      "epoch:155, train acc:1.0, test acc:0.7458\n",
      "epoch:156, train acc:1.0, test acc:0.7477\n",
      "epoch:157, train acc:1.0, test acc:0.7469\n",
      "epoch:158, train acc:1.0, test acc:0.7492\n",
      "epoch:159, train acc:1.0, test acc:0.7477\n",
      "epoch:160, train acc:1.0, test acc:0.7482\n",
      "epoch:161, train acc:1.0, test acc:0.7476\n",
      "epoch:162, train acc:1.0, test acc:0.7443\n",
      "epoch:163, train acc:1.0, test acc:0.7465\n",
      "epoch:164, train acc:1.0, test acc:0.7451\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch:165, train acc:1.0, test acc:0.7442\n",
      "epoch:166, train acc:1.0, test acc:0.744\n",
      "epoch:167, train acc:1.0, test acc:0.745\n",
      "epoch:168, train acc:1.0, test acc:0.7476\n",
      "epoch:169, train acc:1.0, test acc:0.7452\n",
      "epoch:170, train acc:1.0, test acc:0.745\n",
      "epoch:171, train acc:1.0, test acc:0.7463\n",
      "epoch:172, train acc:1.0, test acc:0.747\n",
      "epoch:173, train acc:1.0, test acc:0.7462\n",
      "epoch:174, train acc:1.0, test acc:0.7457\n",
      "epoch:175, train acc:1.0, test acc:0.7481\n",
      "epoch:176, train acc:1.0, test acc:0.7487\n",
      "epoch:177, train acc:1.0, test acc:0.7487\n",
      "epoch:178, train acc:1.0, test acc:0.7486\n",
      "epoch:179, train acc:1.0, test acc:0.746\n",
      "epoch:180, train acc:1.0, test acc:0.7496\n",
      "epoch:181, train acc:1.0, test acc:0.748\n",
      "epoch:182, train acc:1.0, test acc:0.7495\n",
      "epoch:183, train acc:1.0, test acc:0.7501\n",
      "epoch:184, train acc:1.0, test acc:0.7493\n",
      "epoch:185, train acc:1.0, test acc:0.7487\n",
      "epoch:186, train acc:1.0, test acc:0.7484\n",
      "epoch:187, train acc:1.0, test acc:0.7503\n",
      "epoch:188, train acc:1.0, test acc:0.7475\n",
      "epoch:189, train acc:1.0, test acc:0.7481\n",
      "epoch:190, train acc:1.0, test acc:0.7479\n",
      "epoch:191, train acc:1.0, test acc:0.7475\n",
      "epoch:192, train acc:1.0, test acc:0.749\n",
      "epoch:193, train acc:1.0, test acc:0.7487\n",
      "epoch:194, train acc:1.0, test acc:0.7503\n",
      "epoch:195, train acc:1.0, test acc:0.7502\n",
      "epoch:196, train acc:1.0, test acc:0.7502\n",
      "epoch:197, train acc:1.0, test acc:0.7497\n",
      "epoch:198, train acc:1.0, test acc:0.7483\n",
      "epoch:199, train acc:1.0, test acc:0.7478\n",
      "epoch:200, train acc:1.0, test acc:0.7492\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# coding: utf-8\n",
    "import os\n",
    "import sys\n",
    "\n",
    "sys.path.append(os.pardir)  # 为了导入父目录的文件而进行的设定\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from dataset.mnist import load_mnist\n",
    "from common.multi_layer_net import MultiLayerNet\n",
    "from common.optimizer import SGD\n",
    "\n",
    "(x_train, t_train), (x_test, t_test) = load_mnist(normalize=True)\n",
    "\n",
    "# 为了再现过拟合，减少学习数据\n",
    "x_train = x_train[:300] # 训练数据取前300个\n",
    "t_train = t_train[:300] # 测试数据取前300个\n",
    "\n",
    "# weight decay（权值衰减）的设定 =======================\n",
    "weight_decay_lambda = 0 # 不使用权值衰减的情况\n",
    "# weight_decay_lambda = 0.1\n",
    "# ====================================================\n",
    "\n",
    "network = MultiLayerNet(input_size=784, hidden_size_list=[100, 100, 100, 100, 100, 100], output_size=10)\n",
    "optimizer = SGD(lr=0.01)\n",
    "\n",
    "max_epochs = 201\n",
    "train_size = x_train.shape[0] # \n",
    "batch_size = 100 \n",
    "\n",
    "train_loss_list = []\n",
    "train_acc_list = []\n",
    "test_acc_list = []\n",
    "\n",
    "iter_per_epoch = max(train_size / batch_size, 1)\n",
    "epoch_cnt = 0\n",
    "\n",
    "for i in range(1000000000):\n",
    "    batch_mask = np.random.choice(train_size, batch_size)\n",
    "    x_batch = x_train[batch_mask]\n",
    "    t_batch = t_train[batch_mask]\n",
    "\n",
    "    grads = network.gradient(x_batch, t_batch)\n",
    "    optimizer.update(network.params, grads)\n",
    "\n",
    "    if i % iter_per_epoch == 0:\n",
    "        train_acc = network.accuracy(x_train, t_train)\n",
    "        test_acc = network.accuracy(x_test, t_test)\n",
    "        train_acc_list.append(train_acc)\n",
    "        test_acc_list.append(test_acc)\n",
    "\n",
    "        print(\"epoch:\" + str(epoch_cnt) + \", train acc:\" + str(train_acc) + \", test acc:\" + str(test_acc))\n",
    "\n",
    "        epoch_cnt += 1\n",
    "        if epoch_cnt >= max_epochs:\n",
    "            break\n",
    "\n",
    "\n",
    "# 3.绘制图形==========\n",
    "markers = {'train': 'o', 'test': 's'}\n",
    "x = np.arange(max_epochs)\n",
    "plt.plot(x, train_acc_list, marker='o', label='train', markevery=10)\n",
    "plt.plot(x, test_acc_list, marker='s', label='test', markevery=10)\n",
    "plt.xlabel(\"epochs\")\n",
    "plt.ylabel(\"accuracy\")\n",
    "plt.ylim(0, 1.0)\n",
    "plt.legend(loc='lower right')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "过了100个 epoch 左右后，用训练数据测试到的识别精度几乎都为100%。但是，对于测试数据，离100%的识别精度还有较大的差距。如此大的识别精度差距，只是拟合了训练数据的结果。由图可知，模型对训练时没有使用的一般数据（测试数据）拟合得不是很好。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 权值衰减\n",
    "**权值衰减**是一直以来经常被使用的一种抑制过拟合的方法。该方法通过在学习的过程中对大的权重进行惩罚，来抑制过拟合。很多过拟合原本就是因为权重参数取值过大才发生的。\n",
    "\n",
    "神经网络的学习目的是减小损失函数的值。这时，例如为损失函数加上权重的平方范数（L2范数），就可以抑制权重变大。用符号表示的话，如果将权重记为*$W$*，L2范数的权值衰减就是$\\frac{1}{2} \\lambda W^2$，然后**将这个 $\\frac{1}{2} \\lambda W^2$ 加到损失函数上**。这里，$\\lambda$是控制正则化强度的超参数。$\\lambda$设置的越大，对大的权重施加的惩罚就越重。此外，$\\frac{1}{2} \\lambda W^2$ 开头的 $\\frac{1}{2}$是用于将 $\\frac{1}{2} \\lambda W^2$ 的求导结果变成 $\\lambda W$ 的调整用常量。\n",
    "\n",
    "对于所有权重，权值衰减方法都会Wie损失函数加上 $\\frac{1}{2} \\lambda W^2$。因此在求权重梯度的计算中，要为之前的误差反向传播法的结果加上正则化的项的导数 $\\lambda W$。\n",
    "\n",
    "---\n",
    "\n",
    "**L2范数相当于各个元素的平方和。**\n",
    "假设有权重 $W = (w_1,w_2,...,w_n)$，则L2范数可用 $\\sqrt{w_1^2+w_2^2+...+w_n^2}$ 计算出来。<br>\n",
    "除了L2范数，还有L1范数、$L\\infty范数等。$<br>\n",
    "L1范数是各个元素的绝对值之和，相当于 $\\left| w_1 \\right| + \\left| w_2 \\right| +...+\\left| w_n \\right|$。<br>\n",
    "$L\\infty$范数也称为 Max范数，相当于各个元素的绝对值中最大的那个一个。<br>\n",
    "L2范数、L1范数、$L\\infty$范数都可以用作正则化项，它们各有各的特点。\n",
    "\n",
    "---\n",
    "\n",
    "对于刚刚进行的实验，**应用 $\\lambda = 0.1$的权值衰减**，结果如下。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch:0, train acc:0.11, test acc:0.0829\n",
      "epoch:1, train acc:0.14, test acc:0.0898\n",
      "epoch:2, train acc:0.14333333333333334, test acc:0.1008\n",
      "epoch:3, train acc:0.19666666666666666, test acc:0.1141\n",
      "epoch:4, train acc:0.20666666666666667, test acc:0.1331\n",
      "epoch:5, train acc:0.23666666666666666, test acc:0.1588\n",
      "epoch:6, train acc:0.2633333333333333, test acc:0.1853\n",
      "epoch:7, train acc:0.2833333333333333, test acc:0.2033\n",
      "epoch:8, train acc:0.31666666666666665, test acc:0.2262\n",
      "epoch:9, train acc:0.3333333333333333, test acc:0.2392\n",
      "epoch:10, train acc:0.33, test acc:0.2514\n",
      "epoch:11, train acc:0.37333333333333335, test acc:0.2643\n",
      "epoch:12, train acc:0.37333333333333335, test acc:0.2706\n",
      "epoch:13, train acc:0.39666666666666667, test acc:0.2867\n",
      "epoch:14, train acc:0.4166666666666667, test acc:0.3005\n",
      "epoch:15, train acc:0.42, test acc:0.3077\n",
      "epoch:16, train acc:0.43333333333333335, test acc:0.321\n",
      "epoch:17, train acc:0.48333333333333334, test acc:0.3436\n",
      "epoch:18, train acc:0.47333333333333333, test acc:0.342\n",
      "epoch:19, train acc:0.47, test acc:0.3506\n",
      "epoch:20, train acc:0.48333333333333334, test acc:0.3626\n",
      "epoch:21, train acc:0.47333333333333333, test acc:0.3696\n",
      "epoch:22, train acc:0.49333333333333335, test acc:0.3725\n",
      "epoch:23, train acc:0.49666666666666665, test acc:0.3848\n",
      "epoch:24, train acc:0.5033333333333333, test acc:0.3927\n",
      "epoch:25, train acc:0.51, test acc:0.3968\n",
      "epoch:26, train acc:0.5333333333333333, test acc:0.406\n",
      "epoch:27, train acc:0.5233333333333333, test acc:0.402\n",
      "epoch:28, train acc:0.5366666666666666, test acc:0.4118\n",
      "epoch:29, train acc:0.5466666666666666, test acc:0.418\n",
      "epoch:30, train acc:0.5633333333333334, test acc:0.4207\n",
      "epoch:31, train acc:0.5633333333333334, test acc:0.4246\n",
      "epoch:32, train acc:0.5533333333333333, test acc:0.4136\n",
      "epoch:33, train acc:0.58, test acc:0.4267\n",
      "epoch:34, train acc:0.5866666666666667, test acc:0.438\n",
      "epoch:35, train acc:0.6133333333333333, test acc:0.461\n",
      "epoch:36, train acc:0.6133333333333333, test acc:0.4544\n",
      "epoch:37, train acc:0.6166666666666667, test acc:0.467\n",
      "epoch:38, train acc:0.6166666666666667, test acc:0.461\n",
      "epoch:39, train acc:0.6133333333333333, test acc:0.4666\n",
      "epoch:40, train acc:0.6233333333333333, test acc:0.4815\n",
      "epoch:41, train acc:0.6766666666666666, test acc:0.5048\n",
      "epoch:42, train acc:0.6566666666666666, test acc:0.5007\n",
      "epoch:43, train acc:0.67, test acc:0.5019\n",
      "epoch:44, train acc:0.6666666666666666, test acc:0.5071\n",
      "epoch:45, train acc:0.6466666666666666, test acc:0.4945\n",
      "epoch:46, train acc:0.6633333333333333, test acc:0.5129\n",
      "epoch:47, train acc:0.6766666666666666, test acc:0.5207\n",
      "epoch:48, train acc:0.7, test acc:0.5317\n",
      "epoch:49, train acc:0.7, test acc:0.5281\n",
      "epoch:50, train acc:0.6933333333333334, test acc:0.539\n",
      "epoch:51, train acc:0.7, test acc:0.5481\n",
      "epoch:52, train acc:0.7033333333333334, test acc:0.5469\n",
      "epoch:53, train acc:0.7166666666666667, test acc:0.5476\n",
      "epoch:54, train acc:0.7, test acc:0.5471\n",
      "epoch:55, train acc:0.7, test acc:0.5472\n",
      "epoch:56, train acc:0.7133333333333334, test acc:0.554\n",
      "epoch:57, train acc:0.7066666666666667, test acc:0.5644\n",
      "epoch:58, train acc:0.7266666666666667, test acc:0.5719\n",
      "epoch:59, train acc:0.73, test acc:0.5677\n",
      "epoch:60, train acc:0.7233333333333334, test acc:0.5645\n",
      "epoch:61, train acc:0.7233333333333334, test acc:0.5706\n",
      "epoch:62, train acc:0.7266666666666667, test acc:0.5654\n",
      "epoch:63, train acc:0.7533333333333333, test acc:0.5833\n",
      "epoch:64, train acc:0.75, test acc:0.5947\n",
      "epoch:65, train acc:0.7666666666666667, test acc:0.6013\n",
      "epoch:66, train acc:0.7733333333333333, test acc:0.6043\n",
      "epoch:67, train acc:0.7466666666666667, test acc:0.5989\n",
      "epoch:68, train acc:0.7533333333333333, test acc:0.6022\n",
      "epoch:69, train acc:0.7633333333333333, test acc:0.6043\n",
      "epoch:70, train acc:0.7766666666666666, test acc:0.6082\n",
      "epoch:71, train acc:0.7633333333333333, test acc:0.6074\n",
      "epoch:72, train acc:0.77, test acc:0.6044\n",
      "epoch:73, train acc:0.79, test acc:0.6242\n",
      "epoch:74, train acc:0.7933333333333333, test acc:0.6256\n",
      "epoch:75, train acc:0.7733333333333333, test acc:0.6088\n",
      "epoch:76, train acc:0.78, test acc:0.6168\n",
      "epoch:77, train acc:0.78, test acc:0.6202\n",
      "epoch:78, train acc:0.7833333333333333, test acc:0.6157\n",
      "epoch:79, train acc:0.8033333333333333, test acc:0.6284\n",
      "epoch:80, train acc:0.8133333333333334, test acc:0.6389\n",
      "epoch:81, train acc:0.79, test acc:0.6247\n",
      "epoch:82, train acc:0.7833333333333333, test acc:0.6205\n",
      "epoch:83, train acc:0.8166666666666667, test acc:0.6358\n",
      "epoch:84, train acc:0.8133333333333334, test acc:0.6447\n",
      "epoch:85, train acc:0.8366666666666667, test acc:0.6437\n",
      "epoch:86, train acc:0.8433333333333334, test acc:0.658\n",
      "epoch:87, train acc:0.81, test acc:0.6433\n",
      "epoch:88, train acc:0.8366666666666667, test acc:0.6542\n",
      "epoch:89, train acc:0.82, test acc:0.6521\n",
      "epoch:90, train acc:0.85, test acc:0.6638\n",
      "epoch:91, train acc:0.8133333333333334, test acc:0.648\n",
      "epoch:92, train acc:0.8166666666666667, test acc:0.6401\n",
      "epoch:93, train acc:0.8266666666666667, test acc:0.6488\n",
      "epoch:94, train acc:0.8233333333333334, test acc:0.6435\n",
      "epoch:95, train acc:0.83, test acc:0.66\n",
      "epoch:96, train acc:0.8366666666666667, test acc:0.6623\n",
      "epoch:97, train acc:0.8766666666666667, test acc:0.6681\n",
      "epoch:98, train acc:0.8433333333333334, test acc:0.6629\n",
      "epoch:99, train acc:0.8366666666666667, test acc:0.6527\n",
      "epoch:100, train acc:0.83, test acc:0.6555\n",
      "epoch:101, train acc:0.8533333333333334, test acc:0.662\n",
      "epoch:102, train acc:0.86, test acc:0.6683\n",
      "epoch:103, train acc:0.87, test acc:0.671\n",
      "epoch:104, train acc:0.83, test acc:0.6652\n",
      "epoch:105, train acc:0.86, test acc:0.6841\n",
      "epoch:106, train acc:0.8633333333333333, test acc:0.6747\n",
      "epoch:107, train acc:0.8566666666666667, test acc:0.6652\n",
      "epoch:108, train acc:0.85, test acc:0.6778\n",
      "epoch:109, train acc:0.8666666666666667, test acc:0.6782\n",
      "epoch:110, train acc:0.8566666666666667, test acc:0.6817\n",
      "epoch:111, train acc:0.8433333333333334, test acc:0.6838\n",
      "epoch:112, train acc:0.8333333333333334, test acc:0.6714\n",
      "epoch:113, train acc:0.8333333333333334, test acc:0.6651\n",
      "epoch:114, train acc:0.8333333333333334, test acc:0.674\n",
      "epoch:115, train acc:0.84, test acc:0.6756\n",
      "epoch:116, train acc:0.8533333333333334, test acc:0.6848\n",
      "epoch:117, train acc:0.8466666666666667, test acc:0.6714\n",
      "epoch:118, train acc:0.8333333333333334, test acc:0.6785\n",
      "epoch:119, train acc:0.83, test acc:0.6798\n",
      "epoch:120, train acc:0.85, test acc:0.6847\n",
      "epoch:121, train acc:0.84, test acc:0.6713\n",
      "epoch:122, train acc:0.88, test acc:0.6827\n",
      "epoch:123, train acc:0.8366666666666667, test acc:0.6636\n",
      "epoch:124, train acc:0.86, test acc:0.6848\n",
      "epoch:125, train acc:0.8466666666666667, test acc:0.6772\n",
      "epoch:126, train acc:0.8466666666666667, test acc:0.6734\n",
      "epoch:127, train acc:0.8533333333333334, test acc:0.6753\n",
      "epoch:128, train acc:0.8666666666666667, test acc:0.6928\n",
      "epoch:129, train acc:0.8533333333333334, test acc:0.6877\n",
      "epoch:130, train acc:0.87, test acc:0.682\n",
      "epoch:131, train acc:0.87, test acc:0.6936\n",
      "epoch:132, train acc:0.8466666666666667, test acc:0.6832\n",
      "epoch:133, train acc:0.88, test acc:0.6996\n",
      "epoch:134, train acc:0.8733333333333333, test acc:0.6906\n",
      "epoch:135, train acc:0.8666666666666667, test acc:0.6844\n",
      "epoch:136, train acc:0.8666666666666667, test acc:0.6856\n",
      "epoch:137, train acc:0.8566666666666667, test acc:0.6854\n",
      "epoch:138, train acc:0.8566666666666667, test acc:0.6945\n",
      "epoch:139, train acc:0.87, test acc:0.6963\n",
      "epoch:140, train acc:0.88, test acc:0.6845\n",
      "epoch:141, train acc:0.87, test acc:0.6881\n",
      "epoch:142, train acc:0.8666666666666667, test acc:0.6954\n",
      "epoch:143, train acc:0.8766666666666667, test acc:0.6922\n",
      "epoch:144, train acc:0.8833333333333333, test acc:0.6932\n",
      "epoch:145, train acc:0.87, test acc:0.6858\n",
      "epoch:146, train acc:0.87, test acc:0.6828\n",
      "epoch:147, train acc:0.8666666666666667, test acc:0.6919\n",
      "epoch:148, train acc:0.88, test acc:0.6913\n",
      "epoch:149, train acc:0.8933333333333333, test acc:0.6919\n",
      "epoch:150, train acc:0.8766666666666667, test acc:0.6859\n",
      "epoch:151, train acc:0.87, test acc:0.689\n",
      "epoch:152, train acc:0.87, test acc:0.6888\n",
      "epoch:153, train acc:0.8633333333333333, test acc:0.6887\n",
      "epoch:154, train acc:0.8566666666666667, test acc:0.6852\n",
      "epoch:155, train acc:0.8566666666666667, test acc:0.6938\n",
      "epoch:156, train acc:0.87, test acc:0.691\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch:157, train acc:0.8566666666666667, test acc:0.6907\n",
      "epoch:158, train acc:0.8733333333333333, test acc:0.697\n",
      "epoch:159, train acc:0.8733333333333333, test acc:0.6898\n",
      "epoch:160, train acc:0.8733333333333333, test acc:0.6794\n",
      "epoch:161, train acc:0.8633333333333333, test acc:0.6801\n",
      "epoch:162, train acc:0.8566666666666667, test acc:0.6809\n",
      "epoch:163, train acc:0.8666666666666667, test acc:0.6831\n",
      "epoch:164, train acc:0.86, test acc:0.6886\n",
      "epoch:165, train acc:0.8533333333333334, test acc:0.6818\n",
      "epoch:166, train acc:0.87, test acc:0.6857\n",
      "epoch:167, train acc:0.8633333333333333, test acc:0.6829\n",
      "epoch:168, train acc:0.8633333333333333, test acc:0.6885\n",
      "epoch:169, train acc:0.8633333333333333, test acc:0.6915\n",
      "epoch:170, train acc:0.8666666666666667, test acc:0.6948\n",
      "epoch:171, train acc:0.8566666666666667, test acc:0.692\n",
      "epoch:172, train acc:0.8733333333333333, test acc:0.6951\n",
      "epoch:173, train acc:0.8733333333333333, test acc:0.6979\n",
      "epoch:174, train acc:0.8566666666666667, test acc:0.6874\n",
      "epoch:175, train acc:0.86, test acc:0.6916\n",
      "epoch:176, train acc:0.8566666666666667, test acc:0.6873\n",
      "epoch:177, train acc:0.8533333333333334, test acc:0.685\n",
      "epoch:178, train acc:0.8733333333333333, test acc:0.6941\n",
      "epoch:179, train acc:0.87, test acc:0.6916\n",
      "epoch:180, train acc:0.8666666666666667, test acc:0.6955\n",
      "epoch:181, train acc:0.86, test acc:0.6942\n",
      "epoch:182, train acc:0.8533333333333334, test acc:0.6937\n",
      "epoch:183, train acc:0.86, test acc:0.6915\n",
      "epoch:184, train acc:0.8533333333333334, test acc:0.6877\n",
      "epoch:185, train acc:0.87, test acc:0.7012\n",
      "epoch:186, train acc:0.87, test acc:0.7003\n",
      "epoch:187, train acc:0.89, test acc:0.6945\n",
      "epoch:188, train acc:0.8866666666666667, test acc:0.6999\n",
      "epoch:189, train acc:0.8833333333333333, test acc:0.7023\n",
      "epoch:190, train acc:0.8666666666666667, test acc:0.6936\n",
      "epoch:191, train acc:0.87, test acc:0.7024\n",
      "epoch:192, train acc:0.86, test acc:0.6961\n",
      "epoch:193, train acc:0.87, test acc:0.6848\n",
      "epoch:194, train acc:0.86, test acc:0.6963\n",
      "epoch:195, train acc:0.8633333333333333, test acc:0.6965\n",
      "epoch:196, train acc:0.8666666666666667, test acc:0.6973\n",
      "epoch:197, train acc:0.8633333333333333, test acc:0.6907\n",
      "epoch:198, train acc:0.86, test acc:0.69\n",
      "epoch:199, train acc:0.8766666666666667, test acc:0.6902\n",
      "epoch:200, train acc:0.88, test acc:0.6913\n"
     ]
    },
    {
     "data": {
      "image/png": "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WNzqjmDLkWz8vD3oEx1iLDBXwM7PjNpCQVH17yyEcBuzJvTAv/JhUwt/b09mTejRaMcIDAys+n7dunWsXr2a3377jcTERPr372/1WQBf37PD2z09PSkvL2+UWNwiEVT2/r+/4QhmDd/tPG6sOLwezhyHftNdG6AQokmZ1j+GF6+9mJgwfxTGncCL117MtP71za1Vv+DgYM6cOWN1XW5uLq1atSIgIICkpCQ2btx43sc5Hy2+aaiy97+ozOiZLy03M3uxMWpo2qFF4BcK3WVuYiFETdP6x1zQhb+2iIgIRowYwUUXXYS/vz9t2rSpWjdx4kTmzZtH37596dGjB8OGDWu049pDaW110rAma9CgQTohIcHu7W219Q0PyeaTsodg6L0w8cXGDFEI0QTt27ePXr16uToMp7D2syqlttoq89/im4YyrCQBgNuKPjJqC438s5MjEkKIpqXFJ4LosLpjbPuqg1zluQmG3w9BjTcHshBCNEctPhHU7v33opw5Pu9S5NsaLnnQhZEJIUTT0OI7i6etHs00z0xjsswaQsEvxBUhCSFEk9Li7wgoyLS+vCTXuXEIIUQT1fITgRBCiHq1+KYhIYRosLndrLcmBEbBrOTzekuTycSiRYu47777GrzvK6+8wsyZMwkICDj3xudB7giEEKI2W03Ktpbb4XznIwAjERQWFp73sc9F7giEEO7n+yfhxK7z2/e9q6wvb3sxTJpjc7fqZaivuOIKoqKi+PzzzykpKeGaa67h2WefpaCggBtvvJG0tDQqKip4+umnOXnyJBkZGYwZM4bIyEjWrl17fnHXo+UngsAo27d4QgjhJHPmzGH37t3s2LGDVatW8eWXX7J582a01kyZMoWffvqJU6dOER0dzXfffQcYNYhCQ0N5+eWXWbt2LZGRkQ6JreUngvNszxNCtGD1fHIH4JlQ2+tmfHfBh1+1ahWrVq2if//+AOTn55OcnMyoUaN47LHHeOKJJ5g8eTKjRo264GPZo+UnAiGEaGK01syePZs//OEPddZt3bqV5cuXM3v2bMaPH8/f/vY3h8cjncVCCFGbrabjC2hSrl6GesKECSxYsID8/HwA0tPTyczMJCMjg4CAAG677TYee+wxtm3bVmdfR5A7AiGEqM0BTcrVy1BPmjSJW265heHDjdnOgoKCWLhwISkpKcyaNQsPDw+8vb156623AJg5cyaTJk2iXbt2DuksbvFlqIUQAqQMtVuXoRZCCFE/SQRCCOHmJBEIIdxGc2sKPx/n8zNKIhBCuAU/Pz+ysrJadDLQWpOVlYWfn1+D9pNRQ0IItxAbG0taWhqnTp1ydSgO5efnR2xsbIP2kUQghHAL3t7exMXFuTqMJsmhTUNKqYlKqf1KqRSl1JNW1iul1KuW9TuVUgMcGY8QQoi6HJYIlFKewBvAJKA3cLNSqnetzSYB3SxfM4G3HBWPEEII6xx5RzAESNFaH9JalwKfAlNrbTMV+FAbNgJhSql2DoxJCCFELY7sI4gBUqu9TgOG2rFNDHC8+kZKqZkYdwwA+Uqp/ecZUyRw+jz3daSmGhc03dgkroaRuBqmJcbV0dYKRyYCZWVZ7XFb9myD1no+MP+CA1IqwdYj1q7UVOOCphubxNUwElfDuFtcjmwaSgPaV3sdC2ScxzZCCCEcyJGJYAvQTSkVp5TyAaYDS2ttsxS4wzJ6aBiQq7U+XvuNhBBCOI7Dmoa01uVKqQeAlYAnsEBrvUcpda9l/TxgOXAlkAIUAjMcFY/FBTcvOUhTjQuabmwSV8NIXA3jVnE1uzLUQgghGpfUGhJCCDcniUAIIdyc2ySCc5W7cGIc7ZVSa5VS+5RSe5RSD1uWP6OUSldK7bB8XemC2I4opXZZjp9gWRaulPpBKZVs+beVk2PqUe2c7FBK5SmlHnHF+VJKLVBKZSqldldbZvP8KKVmW/7e9iulJjg5rrlKqSRL6ZavlVJhluWdlFJF1c7bPCfHZfP35uLz9Vm1mI4opXZYljvzfNm6Njj+b0xr3eK/MDqrDwKdAR8gEejtoljaAQMs3wcDBzBKcDwDPObi83QEiKy17F/Ak5bvnwT+6eLf4wmMB2Ocfr6AS4EBwO5znR/L7zQR8AXiLH9/nk6MazzgZfn+n9Xi6lR9OxecL6u/N1efr1rrXwL+5oLzZeva4PC/MXe5I7Cn3IVTaK2Pa623Wb4/A+zDeJq6qZoKfGD5/gNgmgtjGQsc1FofdcXBtdY/Adm1Fts6P1OBT7XWJVrrwxgj44Y4Ky6t9Sqtdbnl5UaMZ3Scysb5ssWl56uSUkoBNwKfOOLY9ann2uDwvzF3SQS2Slm4lFKqE9Af2GRZ9IDlVn6Bs5tgLDSwSim11VLWA6CNtjzbYfk3ygVxVZpOzf+grj5fYPv8NKW/ud8B31d7HaeU2q6UWq+UGuWCeKz93prK+RoFnNRaJ1db5vTzVeva4PC/MXdJBHaVsnAmpVQQ8BXwiNY6D6PyahcgHqPW0ksuCGuE1noARlXY+5VSl7ogBquU8VDiFOALy6KmcL7q0yT+5pRSfwXKgY8ti44DHbTW/YE/A4uUUiFODMnW761JnC/gZmp+2HD6+bJybbC5qZVl53XO3CURNKlSFkopb4xf9Mda68UAWuuTWusKrbUZ+B8Oui2uj9Y6w/JvJvC1JYaTylIR1vJvprPjspgEbNNan7TE6PLzZWHr/Lj8b04pdScwGbhVWxqVLc0IWZbvt2K0K3d3Vkz1/N6awvnyAq4FPqtc5uzzZe3agBP+xtwlEdhT7sIpLG2Q7wL7tNYvV1tevfz2NcDu2vs6OK5ApVRw5fcYnY27Mc7TnZbN7gS+cWZc1dT4pObq81WNrfOzFJiulPJVSsVhzLmx2VlBKaUmAk8AU7TWhdWWt1bGXCEopTpb4jrkxLhs/d5cer4sxgFJWuu0ygXOPF+2rg0442/MGb3hTeELo5TFAYyM/lcXxjES4/ZtJ7DD8nUl8BGwy7J8KdDOyXF1xhiBkAjsqTxHQATwI5Bs+TfcBecsAMgCQqstc/r5wkhEx4EyjE9jv6/v/AB/tfy97QcmOTmuFIz248q/sXmWba+z/H4TgW3A1U6Oy+bvzZXny7L8feDeWts683zZujY4/G9MSkwIIYSbc5emISGEEDZIIhBCCDcniUAIIdycJAIhhHBzkgiEEMLNSSIQwsGUUqOVUstcHYcQtkgiEEIINyeJQAgLpdRtSqnNlrrzbyulPJVS+Uqpl5RS25RSPyqlWlu2jVdKbVRn6/23sizvqpRarZRKtOzTxfL2QUqpL5UxR8DHlqdIUUrNUUrttbzPv130ows3J4lACEAp1Qu4CaPwXjxQAdwKBGLUOBoArAf+btnlQ+AJrXVfjCdlK5d/DLyhte4HXILxBCsYlSQfwagh3xkYoZQKxyiz0MfyPv9w7E8phHWSCIQwjAUGAlsss1ONxbhgmzlbhGwhMFIpFQqEaa3XW5Z/AFxqqdUUo7X+GkBrXazP1vnZrLVO00axtR0YE57kAcXAO0qpa4GqmkBCOJMkAiEMCvhAax1v+eqhtX7Gynb11WSxVha4Ukm17yswZg8rx6i++RXGZCMrGhizEI1CEoEQhh+B65VSUVA1T2xHjP8j11u2uQX4RWudC+RUm6TkdmC9NmrHpymlplnew1cpFWDrgJa686Fa6+UYzUbxjvjBhDgXL1cHIERToLXeq5R6CmOGNg+MypT3AwVAH6XUViAXox8BjHLA8ywX+kPADMvy24G3lVL/Z3mPG+o5bDDwjVLKD+Nu4k+N/GMJYRepPipEPZRS+VrrIFfHIYQjSdOQEEK4ObkjEEIINyd3BEII4eYkEQghhJuTRCCEEG5OEoEQQrg5SQRCCOHm/h/C5k06EaedhwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# coding: utf-8\n",
    "import os\n",
    "import sys\n",
    "\n",
    "sys.path.append(os.pardir)  # 为了导入父目录的文件而进行的设定\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from dataset.mnist import load_mnist\n",
    "from common.multi_layer_net import MultiLayerNet\n",
    "from common.optimizer import SGD\n",
    "\n",
    "(x_train, t_train), (x_test, t_test) = load_mnist(normalize=True)\n",
    "\n",
    "# 为了再现过拟合，减少学习数据\n",
    "x_train = x_train[:300]\n",
    "t_train = t_train[:300]\n",
    "\n",
    "# weight decay（权值衰减）的设定 =======================\n",
    "# weight_decay_lambda = 0 # 不使用权值衰减的情况\n",
    "weight_decay_lambda = 0.1\n",
    "# ====================================================\n",
    "\n",
    "network = MultiLayerNet(input_size=784, hidden_size_list=[100, 100, 100, 100, 100, 100], output_size=10,\n",
    "                        weight_decay_lambda=weight_decay_lambda)\n",
    "optimizer = SGD(lr=0.01)\n",
    "\n",
    "max_epochs = 201\n",
    "train_size = x_train.shape[0]\n",
    "batch_size = 100\n",
    "\n",
    "train_loss_list = []\n",
    "train_acc_list = []\n",
    "test_acc_list = []\n",
    "\n",
    "iter_per_epoch = max(train_size / batch_size, 1)\n",
    "epoch_cnt = 0\n",
    "\n",
    "for i in range(1000000000):\n",
    "    batch_mask = np.random.choice(train_size, batch_size)\n",
    "    x_batch = x_train[batch_mask]\n",
    "    t_batch = t_train[batch_mask]\n",
    "\n",
    "    grads = network.gradient(x_batch, t_batch)\n",
    "    optimizer.update(network.params, grads)\n",
    "\n",
    "    if i % iter_per_epoch == 0:\n",
    "        train_acc = network.accuracy(x_train, t_train)\n",
    "        test_acc = network.accuracy(x_test, t_test)\n",
    "        train_acc_list.append(train_acc)\n",
    "        test_acc_list.append(test_acc)\n",
    "\n",
    "        print(\"epoch:\" + str(epoch_cnt) + \", train acc:\" + str(train_acc) + \", test acc:\" + str(test_acc))\n",
    "\n",
    "        epoch_cnt += 1\n",
    "        if epoch_cnt >= max_epochs:\n",
    "            break\n",
    "\n",
    "\n",
    "# 3.绘制图形==========\n",
    "markers = {'train': 'o', 'test': 's'}\n",
    "x = np.arange(max_epochs)\n",
    "plt.plot(x, train_acc_list, marker='o', label='train', markevery=10)\n",
    "plt.plot(x, test_acc_list, marker='s', label='test', markevery=10)\n",
    "plt.xlabel(\"epochs\")\n",
    "plt.ylabel(\"accuracy\")\n",
    "plt.ylim(0, 1.0)\n",
    "plt.legend(loc='lower right')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如图，虽然训练数据的识别精度和测试数据的识别精度之间有差距，但是与之前没有使用权值衰减相比，差距变小了，这说明过拟合受到了抑制。此外，还要注意，训练数据的识别精度没有达到100%。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Dropout\n",
    "Dropout **是一种在学习的过程中随机删除神经元的方法**。<br>\n",
    "训练时，每传递一次数据，随机选出隐藏层的神经元，然后将其删除，被删除的神经元不再进行信号的传递。<br>\n",
    "测试时，虽然会传递所有的神经元信号，但是对于各个神经元的输出，要乘上训练时的删除比例后再输出。<br>\n",
    "\n",
    "下面我们来实现 Dropout。这里的实现重视易理解性。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "class Dropout:\n",
    "    def __init__(self, dropout_ratio=0.5):\n",
    "        self.dropout_ratio = dropout_ratio\n",
    "        self.mask = None\n",
    "    \n",
    "    def forward(self, x, train_flg=True):\n",
    "        if train_flg:\n",
    "            self.mask = np.random.rand(*x.shape) > self.dropout_ratio\n",
    "            return x * self.mask\n",
    "        else:\n",
    "            return x * (1.0 - self.dropout_ratio)\n",
    "    \n",
    "    def backward(self, dout):\n",
    "        return dout * self.mask"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "每次正向传播时，self.mask 中都会以 False 的形式保存要删除的神经元。<br>\n",
    "self.mask 会随机生成和x形状相同的数组，并将值比 dropout_ratio 大的元素设为 True。<br>\n",
    "反向传播时的行为和 ReLU 相同，也就是说：\n",
    "* 正向传播时传递了信号的神经元，反向传播时按原样传递信号；<br>\n",
    "* 正向传播时没有传递信号的神经元，方向传播时信号将停在那里。\n",
    "\n",
    "我们使用 MNIST 数据集进行验证，以确认 Dropout 的效果。代码中使用了 Trainer 来简化实现。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "train loss:2.3090985206729164\n",
      "=== epoch:1, train acc:0.10666666666666667, test acc:0.1129 ===\n",
      "train loss:2.302295508749314\n",
      "train loss:2.3130821909177883\n",
      "train loss:2.303974796097727\n",
      "=== epoch:2, train acc:0.1, test acc:0.1109 ===\n",
      "train loss:2.3163375526453702\n",
      "train loss:2.3088045697012767\n",
      "train loss:2.3041572893303273\n",
      "=== epoch:3, train acc:0.10666666666666667, test acc:0.1131 ===\n",
      "train loss:2.3010260905521647\n",
      "train loss:2.3109418225683522\n",
      "train loss:2.299611428771406\n",
      "=== epoch:4, train acc:0.09666666666666666, test acc:0.1138 ===\n",
      "train loss:2.320268024329767\n",
      "train loss:2.312532650992233\n",
      "train loss:2.3000686760098152\n",
      "=== epoch:5, train acc:0.10333333333333333, test acc:0.1148 ===\n",
      "train loss:2.3014108151070913\n",
      "train loss:2.3026963367628084\n",
      "train loss:2.300496206735387\n",
      "=== epoch:6, train acc:0.11333333333333333, test acc:0.117 ===\n",
      "train loss:2.3121909234599234\n",
      "train loss:2.3058930019802206\n",
      "train loss:2.289139036714912\n",
      "=== epoch:7, train acc:0.12, test acc:0.1192 ===\n",
      "train loss:2.300402315144742\n",
      "train loss:2.3045438270597605\n",
      "train loss:2.2980716851136322\n",
      "=== epoch:8, train acc:0.12, test acc:0.1215 ===\n",
      "train loss:2.291838060353441\n",
      "train loss:2.290632938636974\n",
      "train loss:2.2881224721677604\n",
      "=== epoch:9, train acc:0.12, test acc:0.1224 ===\n",
      "train loss:2.29818601277844\n",
      "train loss:2.296534412226713\n",
      "train loss:2.2970068791138543\n",
      "=== epoch:10, train acc:0.12333333333333334, test acc:0.1247 ===\n",
      "train loss:2.296014954612953\n",
      "train loss:2.3073767096773854\n",
      "train loss:2.306933512462676\n",
      "=== epoch:11, train acc:0.13666666666666666, test acc:0.1273 ===\n",
      "train loss:2.292332578546292\n",
      "train loss:2.2965410925171303\n",
      "train loss:2.2960477186532087\n",
      "=== epoch:12, train acc:0.14666666666666667, test acc:0.1335 ===\n",
      "train loss:2.297392951780401\n",
      "train loss:2.2885964642577505\n",
      "train loss:2.28699073484648\n",
      "=== epoch:13, train acc:0.15, test acc:0.1369 ===\n",
      "train loss:2.290424733865003\n",
      "train loss:2.2846003066611273\n",
      "train loss:2.2988600814517106\n",
      "=== epoch:14, train acc:0.15, test acc:0.1395 ===\n",
      "train loss:2.2960793890179634\n",
      "train loss:2.29254554576613\n",
      "train loss:2.2903343538445666\n",
      "=== epoch:15, train acc:0.16333333333333333, test acc:0.148 ===\n",
      "train loss:2.288719095100604\n",
      "train loss:2.287626583217569\n",
      "train loss:2.285549690107068\n",
      "=== epoch:16, train acc:0.16333333333333333, test acc:0.1506 ===\n",
      "train loss:2.2984580200340656\n",
      "train loss:2.2942158490838445\n",
      "train loss:2.2846449781272438\n",
      "=== epoch:17, train acc:0.16666666666666666, test acc:0.1538 ===\n",
      "train loss:2.296951149710952\n",
      "train loss:2.2832677322071224\n",
      "train loss:2.2984673738791734\n",
      "=== epoch:18, train acc:0.16333333333333333, test acc:0.1647 ===\n",
      "train loss:2.2847938593182096\n",
      "train loss:2.293857330341171\n",
      "train loss:2.2881115241780345\n",
      "=== epoch:19, train acc:0.16666666666666666, test acc:0.1691 ===\n",
      "train loss:2.282971892620898\n",
      "train loss:2.293518581098279\n",
      "train loss:2.294173255840088\n",
      "=== epoch:20, train acc:0.18, test acc:0.1675 ===\n",
      "train loss:2.29023960267412\n",
      "train loss:2.2838964000538793\n",
      "train loss:2.2819015102939626\n",
      "=== epoch:21, train acc:0.17666666666666667, test acc:0.1741 ===\n",
      "train loss:2.2859280543886484\n",
      "train loss:2.2930379754370542\n",
      "train loss:2.282473491518691\n",
      "=== epoch:22, train acc:0.17333333333333334, test acc:0.1754 ===\n",
      "train loss:2.2861586065767083\n",
      "train loss:2.2961045466087016\n",
      "train loss:2.285726227357711\n",
      "=== epoch:23, train acc:0.17333333333333334, test acc:0.1795 ===\n",
      "train loss:2.28715351236789\n",
      "train loss:2.2734631998016472\n",
      "train loss:2.286277282697989\n",
      "=== epoch:24, train acc:0.17333333333333334, test acc:0.1801 ===\n",
      "train loss:2.2834855644336503\n",
      "train loss:2.28060219324273\n",
      "train loss:2.2802878408342804\n",
      "=== epoch:25, train acc:0.18333333333333332, test acc:0.1772 ===\n",
      "train loss:2.28627762203539\n",
      "train loss:2.28012677463755\n",
      "train loss:2.2740693008608095\n",
      "=== epoch:26, train acc:0.18666666666666668, test acc:0.1868 ===\n",
      "train loss:2.2898719357145234\n",
      "train loss:2.2652103045313425\n",
      "train loss:2.285356045708961\n",
      "=== epoch:27, train acc:0.19333333333333333, test acc:0.1887 ===\n",
      "train loss:2.2803994587598195\n",
      "train loss:2.2791246614156844\n",
      "train loss:2.2766489786148623\n",
      "=== epoch:28, train acc:0.19666666666666666, test acc:0.1904 ===\n",
      "train loss:2.28609924098501\n",
      "train loss:2.2698587929017204\n",
      "train loss:2.2704667907078884\n",
      "=== epoch:29, train acc:0.21, test acc:0.1967 ===\n",
      "train loss:2.2832184493964456\n",
      "train loss:2.28284016702266\n",
      "train loss:2.28833070843204\n",
      "=== epoch:30, train acc:0.21666666666666667, test acc:0.2008 ===\n",
      "train loss:2.280520466042961\n",
      "train loss:2.276181515786719\n",
      "train loss:2.2733864191620787\n",
      "=== epoch:31, train acc:0.23, test acc:0.2022 ===\n",
      "train loss:2.264633172017924\n",
      "train loss:2.2781269423941524\n",
      "train loss:2.2781275901850453\n",
      "=== epoch:32, train acc:0.22, test acc:0.2028 ===\n",
      "train loss:2.29075541620702\n",
      "train loss:2.258477945152505\n",
      "train loss:2.273434849490994\n",
      "=== epoch:33, train acc:0.21333333333333335, test acc:0.2007 ===\n",
      "train loss:2.2747658581345256\n",
      "train loss:2.2693908186407636\n",
      "train loss:2.271005931207008\n",
      "=== epoch:34, train acc:0.25, test acc:0.2114 ===\n",
      "train loss:2.2732157703523996\n",
      "train loss:2.2736821971582515\n",
      "train loss:2.2689623960423764\n",
      "=== epoch:35, train acc:0.24666666666666667, test acc:0.2142 ===\n",
      "train loss:2.2707443432263683\n",
      "train loss:2.2821630284361842\n",
      "train loss:2.266521119063431\n",
      "=== epoch:36, train acc:0.25333333333333335, test acc:0.2203 ===\n",
      "train loss:2.280368387672462\n",
      "train loss:2.275560156160531\n",
      "train loss:2.2874491076298664\n",
      "=== epoch:37, train acc:0.24666666666666667, test acc:0.2293 ===\n",
      "train loss:2.257165745800164\n",
      "train loss:2.273363061717257\n",
      "train loss:2.268606164085268\n",
      "=== epoch:38, train acc:0.24666666666666667, test acc:0.224 ===\n",
      "train loss:2.2755129503212532\n",
      "train loss:2.2620181582903056\n",
      "train loss:2.273978083344583\n",
      "=== epoch:39, train acc:0.25333333333333335, test acc:0.2314 ===\n",
      "train loss:2.273438567646807\n",
      "train loss:2.2738689680502606\n",
      "train loss:2.2699081885901213\n",
      "=== epoch:40, train acc:0.26, test acc:0.2352 ===\n",
      "train loss:2.267043611770828\n",
      "train loss:2.275062623793937\n",
      "train loss:2.2571677070255824\n",
      "=== epoch:41, train acc:0.2633333333333333, test acc:0.2347 ===\n",
      "train loss:2.2626542253928417\n",
      "train loss:2.2669554242884966\n",
      "train loss:2.2729131487154017\n",
      "=== epoch:42, train acc:0.2866666666666667, test acc:0.2361 ===\n",
      "train loss:2.261457299162588\n",
      "train loss:2.2773880474632313\n",
      "train loss:2.2711999143212687\n",
      "=== epoch:43, train acc:0.28, test acc:0.2427 ===\n",
      "train loss:2.2572650790290716\n",
      "train loss:2.2701054654003716\n",
      "train loss:2.261810647897262\n",
      "=== epoch:44, train acc:0.2866666666666667, test acc:0.2413 ===\n",
      "train loss:2.2681471188856372\n",
      "train loss:2.2775942336275525\n",
      "train loss:2.2617994461728803\n",
      "=== epoch:45, train acc:0.3, test acc:0.2437 ===\n",
      "train loss:2.270286100433207\n",
      "train loss:2.2474302346088226\n",
      "train loss:2.2575287096289087\n",
      "=== epoch:46, train acc:0.31333333333333335, test acc:0.2474 ===\n",
      "train loss:2.259152625275294\n",
      "train loss:2.260890909323197\n",
      "train loss:2.2609568517947105\n",
      "=== epoch:47, train acc:0.30333333333333334, test acc:0.247 ===\n",
      "train loss:2.267612977068227\n",
      "train loss:2.2696359791820946\n",
      "train loss:2.2765858154665417\n",
      "=== epoch:48, train acc:0.3, test acc:0.2499 ===\n",
      "train loss:2.2555461565475703\n",
      "train loss:2.2532738449383105\n",
      "train loss:2.258763203616954\n",
      "=== epoch:49, train acc:0.2966666666666667, test acc:0.2482 ===\n",
      "train loss:2.2570241088476184\n",
      "train loss:2.258710776414228\n",
      "train loss:2.251907555918402\n",
      "=== epoch:50, train acc:0.2866666666666667, test acc:0.2391 ===\n",
      "train loss:2.2576735956945595\n",
      "train loss:2.2454498553436157\n",
      "train loss:2.2501238446237695\n",
      "=== epoch:51, train acc:0.28, test acc:0.2359 ===\n",
      "train loss:2.2552347159090966\n",
      "train loss:2.2576984064398546\n",
      "train loss:2.265662661451103\n",
      "=== epoch:52, train acc:0.28, test acc:0.2371 ===\n",
      "train loss:2.2575535692881203\n",
      "train loss:2.2551958965150396\n",
      "train loss:2.255723439847037\n",
      "=== epoch:53, train acc:0.27, test acc:0.2325 ===\n",
      "train loss:2.245513268864579\n",
      "train loss:2.271831348904514\n",
      "train loss:2.256158646978461\n",
      "=== epoch:54, train acc:0.27666666666666667, test acc:0.2357 ===\n",
      "train loss:2.2486707234792167\n",
      "train loss:2.2681091348174935\n",
      "train loss:2.2466199949102754\n",
      "=== epoch:55, train acc:0.27, test acc:0.2341 ===\n",
      "train loss:2.2566566084235604\n",
      "train loss:2.252390354614219\n",
      "train loss:2.254047919899391\n",
      "=== epoch:56, train acc:0.26666666666666666, test acc:0.229 ===\n",
      "train loss:2.2693438838740816\n",
      "train loss:2.2512823130175663\n",
      "train loss:2.2585210047877755\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "=== epoch:57, train acc:0.2633333333333333, test acc:0.2213 ===\n",
      "train loss:2.2623329269302395\n",
      "train loss:2.23876405552544\n",
      "train loss:2.2619546606462397\n",
      "=== epoch:58, train acc:0.2733333333333333, test acc:0.2322 ===\n",
      "train loss:2.243182619374734\n",
      "train loss:2.2522512989194134\n",
      "train loss:2.2422788080211857\n",
      "=== epoch:59, train acc:0.2733333333333333, test acc:0.2317 ===\n",
      "train loss:2.253152462046565\n",
      "train loss:2.25359251069147\n",
      "train loss:2.2590515182569892\n",
      "=== epoch:60, train acc:0.27666666666666667, test acc:0.2344 ===\n",
      "train loss:2.239767077805244\n",
      "train loss:2.2569538614929665\n",
      "train loss:2.2490206197352633\n",
      "=== epoch:61, train acc:0.28, test acc:0.2377 ===\n",
      "train loss:2.244811635876526\n",
      "train loss:2.2614118145296227\n",
      "train loss:2.232116224612893\n",
      "=== epoch:62, train acc:0.29, test acc:0.244 ===\n",
      "train loss:2.2611882603213105\n",
      "train loss:2.2481017571686106\n",
      "train loss:2.253442713801706\n",
      "=== epoch:63, train acc:0.2866666666666667, test acc:0.2433 ===\n",
      "train loss:2.2607495394744492\n",
      "train loss:2.243707048134954\n",
      "train loss:2.240361121073926\n",
      "=== epoch:64, train acc:0.30333333333333334, test acc:0.2472 ===\n",
      "train loss:2.240106507540376\n",
      "train loss:2.2502652508224417\n",
      "train loss:2.263645155558409\n",
      "=== epoch:65, train acc:0.30666666666666664, test acc:0.247 ===\n",
      "train loss:2.243049252144237\n",
      "train loss:2.2621990257387368\n",
      "train loss:2.237925857509383\n",
      "=== epoch:66, train acc:0.31333333333333335, test acc:0.252 ===\n",
      "train loss:2.2533067288665536\n",
      "train loss:2.2663956984558316\n",
      "train loss:2.2460280021658146\n",
      "=== epoch:67, train acc:0.32, test acc:0.2535 ===\n",
      "train loss:2.2461841711470614\n",
      "train loss:2.247818901979839\n",
      "train loss:2.253038354662282\n",
      "=== epoch:68, train acc:0.3233333333333333, test acc:0.2572 ===\n",
      "train loss:2.2688583398732955\n",
      "train loss:2.2493847030441567\n",
      "train loss:2.2434295902794945\n",
      "=== epoch:69, train acc:0.32, test acc:0.2558 ===\n",
      "train loss:2.248247451845616\n",
      "train loss:2.245891230914271\n",
      "train loss:2.23497242368541\n",
      "=== epoch:70, train acc:0.3233333333333333, test acc:0.2592 ===\n",
      "train loss:2.25860946536147\n",
      "train loss:2.2461999416301834\n",
      "train loss:2.222094457512559\n",
      "=== epoch:71, train acc:0.33, test acc:0.2595 ===\n",
      "train loss:2.2421446326539485\n",
      "train loss:2.2305567991791357\n",
      "train loss:2.241164591651058\n",
      "=== epoch:72, train acc:0.33, test acc:0.2594 ===\n",
      "train loss:2.242483135247735\n",
      "train loss:2.2478980155035186\n",
      "train loss:2.2269210042471013\n",
      "=== epoch:73, train acc:0.3333333333333333, test acc:0.2607 ===\n",
      "train loss:2.2442831746476766\n",
      "train loss:2.2406947961423365\n",
      "train loss:2.246311493144841\n",
      "=== epoch:74, train acc:0.33666666666666667, test acc:0.2678 ===\n",
      "train loss:2.2472621062731197\n",
      "train loss:2.2337243108104268\n",
      "train loss:2.2255655822506166\n",
      "=== epoch:75, train acc:0.32, test acc:0.2599 ===\n",
      "train loss:2.2371569270986367\n",
      "train loss:2.2478952246654997\n",
      "train loss:2.2368395417186044\n",
      "=== epoch:76, train acc:0.32, test acc:0.2552 ===\n",
      "train loss:2.2332234044202632\n",
      "train loss:2.250335998275288\n",
      "train loss:2.2376276544052227\n",
      "=== epoch:77, train acc:0.32666666666666666, test acc:0.2609 ===\n",
      "train loss:2.223458518382578\n",
      "train loss:2.239411457058851\n",
      "train loss:2.227163021479387\n",
      "=== epoch:78, train acc:0.33666666666666667, test acc:0.2629 ===\n",
      "train loss:2.254100486198732\n",
      "train loss:2.2176485813559794\n",
      "train loss:2.232278194411265\n",
      "=== epoch:79, train acc:0.32666666666666666, test acc:0.2598 ===\n",
      "train loss:2.2347737278917617\n",
      "train loss:2.248453826750742\n",
      "train loss:2.239129209860739\n",
      "=== epoch:80, train acc:0.33666666666666667, test acc:0.2614 ===\n",
      "train loss:2.229004005090325\n",
      "train loss:2.2270911255217403\n",
      "train loss:2.2467420522617956\n",
      "=== epoch:81, train acc:0.34, test acc:0.264 ===\n",
      "train loss:2.2372065698811654\n",
      "train loss:2.2177804763078277\n",
      "train loss:2.2284217162644535\n",
      "=== epoch:82, train acc:0.3433333333333333, test acc:0.2656 ===\n",
      "train loss:2.2269063676317744\n",
      "train loss:2.229644306573883\n",
      "train loss:2.21792751054406\n",
      "=== epoch:83, train acc:0.34, test acc:0.2679 ===\n",
      "train loss:2.2537573955988752\n",
      "train loss:2.2450982483109065\n",
      "train loss:2.238655379113528\n",
      "=== epoch:84, train acc:0.35, test acc:0.2763 ===\n",
      "train loss:2.2235344203890506\n",
      "train loss:2.2352380936342144\n",
      "train loss:2.2287386192723444\n",
      "=== epoch:85, train acc:0.35333333333333333, test acc:0.2742 ===\n",
      "train loss:2.2173663295826667\n",
      "train loss:2.2580325672774055\n",
      "train loss:2.2302542522121183\n",
      "=== epoch:86, train acc:0.35333333333333333, test acc:0.2781 ===\n",
      "train loss:2.24449027194583\n",
      "train loss:2.2260898094054955\n",
      "train loss:2.231235382062103\n",
      "=== epoch:87, train acc:0.35, test acc:0.2782 ===\n",
      "train loss:2.2336240188456244\n",
      "train loss:2.2219190033973275\n",
      "train loss:2.222204223131479\n",
      "=== epoch:88, train acc:0.3566666666666667, test acc:0.2798 ===\n",
      "train loss:2.2278049460740466\n",
      "train loss:2.2263110421064054\n",
      "train loss:2.220438474663721\n",
      "=== epoch:89, train acc:0.36, test acc:0.2847 ===\n",
      "train loss:2.216901320363088\n",
      "train loss:2.2330946983190856\n",
      "train loss:2.2303370583731543\n",
      "=== epoch:90, train acc:0.3566666666666667, test acc:0.2811 ===\n",
      "train loss:2.234964688562975\n",
      "train loss:2.2302003154486076\n",
      "train loss:2.2242509711892167\n",
      "=== epoch:91, train acc:0.36, test acc:0.2794 ===\n",
      "train loss:2.22406789311345\n",
      "train loss:2.2430242273555057\n",
      "train loss:2.216687099304758\n",
      "=== epoch:92, train acc:0.3566666666666667, test acc:0.2792 ===\n",
      "train loss:2.2212731182433907\n",
      "train loss:2.2286561965744722\n",
      "train loss:2.243111569515348\n",
      "=== epoch:93, train acc:0.3566666666666667, test acc:0.2793 ===\n",
      "train loss:2.222754417477187\n",
      "train loss:2.224448378146688\n",
      "train loss:2.2025908369805034\n",
      "=== epoch:94, train acc:0.36, test acc:0.2804 ===\n",
      "train loss:2.2202289669298265\n",
      "train loss:2.2086251432523256\n",
      "train loss:2.213088108040759\n",
      "=== epoch:95, train acc:0.35333333333333333, test acc:0.2834 ===\n",
      "train loss:2.22694901028357\n",
      "train loss:2.241180201145775\n",
      "train loss:2.23099023845589\n",
      "=== epoch:96, train acc:0.36333333333333334, test acc:0.2857 ===\n",
      "train loss:2.2081540829186936\n",
      "train loss:2.232558034598087\n",
      "train loss:2.2255083704455587\n",
      "=== epoch:97, train acc:0.36333333333333334, test acc:0.2901 ===\n",
      "train loss:2.2484776315383543\n",
      "train loss:2.222245013142236\n",
      "train loss:2.2053425086350247\n",
      "=== epoch:98, train acc:0.37, test acc:0.294 ===\n",
      "train loss:2.211816418401768\n",
      "train loss:2.202922245546641\n",
      "train loss:2.2025549734041974\n",
      "=== epoch:99, train acc:0.37666666666666665, test acc:0.3001 ===\n",
      "train loss:2.204145081492985\n",
      "train loss:2.211643160911752\n",
      "train loss:2.2164550666001177\n",
      "=== epoch:100, train acc:0.38333333333333336, test acc:0.3007 ===\n",
      "train loss:2.1922602447416484\n",
      "train loss:2.1970237186872588\n",
      "train loss:2.2114100680391093\n",
      "=== epoch:101, train acc:0.36333333333333334, test acc:0.2943 ===\n",
      "train loss:2.2298040141158486\n",
      "train loss:2.1989914822102965\n",
      "train loss:2.2203099301819744\n",
      "=== epoch:102, train acc:0.37, test acc:0.2985 ===\n",
      "train loss:2.2205210714939287\n",
      "train loss:2.1954255499892197\n",
      "train loss:2.212582994905124\n",
      "=== epoch:103, train acc:0.37333333333333335, test acc:0.3011 ===\n",
      "train loss:2.2097139450994283\n",
      "train loss:2.1979892959926532\n",
      "train loss:2.1847727565967356\n",
      "=== epoch:104, train acc:0.38, test acc:0.3052 ===\n",
      "train loss:2.217852979478147\n",
      "train loss:2.1977810309336836\n",
      "train loss:2.206756415044061\n",
      "=== epoch:105, train acc:0.37666666666666665, test acc:0.3086 ===\n",
      "train loss:2.2140095274770664\n",
      "train loss:2.222725894746195\n",
      "train loss:2.194808073465666\n",
      "=== epoch:106, train acc:0.37333333333333335, test acc:0.2971 ===\n",
      "train loss:2.2088771812636065\n",
      "train loss:2.2028134421213754\n",
      "train loss:2.2059387133145236\n",
      "=== epoch:107, train acc:0.37666666666666665, test acc:0.2956 ===\n",
      "train loss:2.214219723473257\n",
      "train loss:2.1913249142937206\n",
      "train loss:2.176480246791822\n",
      "=== epoch:108, train acc:0.37333333333333335, test acc:0.2948 ===\n",
      "train loss:2.1922605430565043\n",
      "train loss:2.202073725991829\n",
      "train loss:2.203512957086057\n",
      "=== epoch:109, train acc:0.37333333333333335, test acc:0.2937 ===\n",
      "train loss:2.1896426583045194\n",
      "train loss:2.2098813081800452\n",
      "train loss:2.2086903067088848\n",
      "=== epoch:110, train acc:0.37333333333333335, test acc:0.2987 ===\n",
      "train loss:2.2254595717632797\n",
      "train loss:2.193218013826026\n",
      "train loss:2.2096021674628754\n",
      "=== epoch:111, train acc:0.37666666666666665, test acc:0.3004 ===\n",
      "train loss:2.196347937481906\n",
      "train loss:2.2182288300686555\n",
      "train loss:2.1815069994649434\n",
      "=== epoch:112, train acc:0.3933333333333333, test acc:0.3079 ===\n",
      "train loss:2.1951637560158135\n",
      "train loss:2.1778316253345547\n",
      "train loss:2.1911753891381176\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "=== epoch:113, train acc:0.3933333333333333, test acc:0.3114 ===\n",
      "train loss:2.1856108532919807\n",
      "train loss:2.190003783658688\n",
      "train loss:2.164166220582796\n",
      "=== epoch:114, train acc:0.3933333333333333, test acc:0.3091 ===\n",
      "train loss:2.1678981080112334\n",
      "train loss:2.2045266541280957\n",
      "train loss:2.1635998297947223\n",
      "=== epoch:115, train acc:0.4066666666666667, test acc:0.3193 ===\n",
      "train loss:2.1412893498661583\n",
      "train loss:2.173359488143693\n",
      "train loss:2.193624785948301\n",
      "=== epoch:116, train acc:0.41333333333333333, test acc:0.3285 ===\n",
      "train loss:2.188883384781792\n",
      "train loss:2.218329574437789\n",
      "train loss:2.1982429044074667\n",
      "=== epoch:117, train acc:0.42, test acc:0.3338 ===\n",
      "train loss:2.174922519045421\n",
      "train loss:2.18098262064114\n",
      "train loss:2.1875081038746402\n",
      "=== epoch:118, train acc:0.43, test acc:0.3423 ===\n",
      "train loss:2.1915982158695075\n",
      "train loss:2.177194653767222\n",
      "train loss:2.1843192885726257\n",
      "=== epoch:119, train acc:0.42333333333333334, test acc:0.3396 ===\n",
      "train loss:2.214096725340204\n",
      "train loss:2.1873392249591954\n",
      "train loss:2.1823054482623836\n",
      "=== epoch:120, train acc:0.43, test acc:0.3436 ===\n",
      "train loss:2.164596598883594\n",
      "train loss:2.183431447628468\n",
      "train loss:2.1515295863009714\n",
      "=== epoch:121, train acc:0.4266666666666667, test acc:0.3375 ===\n",
      "train loss:2.1893789318048573\n",
      "train loss:2.1835945882459518\n",
      "train loss:2.1738245486722065\n",
      "=== epoch:122, train acc:0.43, test acc:0.3439 ===\n",
      "train loss:2.170846975274559\n",
      "train loss:2.202105181090403\n",
      "train loss:2.162249326817938\n",
      "=== epoch:123, train acc:0.43, test acc:0.3449 ===\n",
      "train loss:2.190558368176558\n",
      "train loss:2.155960655113143\n",
      "train loss:2.1473294418012348\n",
      "=== epoch:124, train acc:0.43333333333333335, test acc:0.3461 ===\n",
      "train loss:2.16554933933051\n",
      "train loss:2.17064452224677\n",
      "train loss:2.1631246647843203\n",
      "=== epoch:125, train acc:0.43, test acc:0.3475 ===\n",
      "train loss:2.1726692550569404\n",
      "train loss:2.1741835911023446\n",
      "train loss:2.193372681885681\n",
      "=== epoch:126, train acc:0.43666666666666665, test acc:0.3541 ===\n",
      "train loss:2.177641158445667\n",
      "train loss:2.1624511571853464\n",
      "train loss:2.1868147602629895\n",
      "=== epoch:127, train acc:0.44333333333333336, test acc:0.3609 ===\n",
      "train loss:2.1500399656767715\n",
      "train loss:2.15304451457943\n",
      "train loss:2.1529803283410356\n",
      "=== epoch:128, train acc:0.44666666666666666, test acc:0.3595 ===\n",
      "train loss:2.1754925970335655\n",
      "train loss:2.1631919744735577\n",
      "train loss:2.1622205678448547\n",
      "=== epoch:129, train acc:0.44666666666666666, test acc:0.3648 ===\n",
      "train loss:2.1540443214301996\n",
      "train loss:2.1579955158066637\n",
      "train loss:2.1481287514920284\n",
      "=== epoch:130, train acc:0.45, test acc:0.3673 ===\n",
      "train loss:2.1410302435366884\n",
      "train loss:2.1796035399467\n",
      "train loss:2.1850788890194077\n",
      "=== epoch:131, train acc:0.44666666666666666, test acc:0.3675 ===\n",
      "train loss:2.1347334085844922\n",
      "train loss:2.1902518256661527\n",
      "train loss:2.1519983019327547\n",
      "=== epoch:132, train acc:0.44666666666666666, test acc:0.3735 ===\n",
      "train loss:2.1505299302275067\n",
      "train loss:2.1399982696660933\n",
      "train loss:2.140776088682026\n",
      "=== epoch:133, train acc:0.44333333333333336, test acc:0.3763 ===\n",
      "train loss:2.1263957874387747\n",
      "train loss:2.1751058503658007\n",
      "train loss:2.1506478500990633\n",
      "=== epoch:134, train acc:0.44, test acc:0.3717 ===\n",
      "train loss:2.1568910230776286\n",
      "train loss:2.1636534921931836\n",
      "train loss:2.1486339153270504\n",
      "=== epoch:135, train acc:0.44333333333333336, test acc:0.3758 ===\n",
      "train loss:2.1424158581646813\n",
      "train loss:2.179646112067366\n",
      "train loss:2.144261207909746\n",
      "=== epoch:136, train acc:0.45, test acc:0.3755 ===\n",
      "train loss:2.144486994737722\n",
      "train loss:2.1365588555281287\n",
      "train loss:2.1230463950041765\n",
      "=== epoch:137, train acc:0.45, test acc:0.3819 ===\n",
      "train loss:2.1907310894181817\n",
      "train loss:2.167183722739369\n",
      "train loss:2.1481375065905426\n",
      "=== epoch:138, train acc:0.46, test acc:0.3881 ===\n",
      "train loss:2.1523688247559916\n",
      "train loss:2.138802724599574\n",
      "train loss:2.1391801863177418\n",
      "=== epoch:139, train acc:0.45666666666666667, test acc:0.3886 ===\n",
      "train loss:2.1303019324096417\n",
      "train loss:2.1591475407252765\n",
      "train loss:2.1327265637164916\n",
      "=== epoch:140, train acc:0.45666666666666667, test acc:0.3873 ===\n",
      "train loss:2.1461079985837546\n",
      "train loss:2.150227468036778\n",
      "train loss:2.1331315240777413\n",
      "=== epoch:141, train acc:0.4633333333333333, test acc:0.3869 ===\n",
      "train loss:2.1500939667338077\n",
      "train loss:2.1215084003325773\n",
      "train loss:2.0827718435015394\n",
      "=== epoch:142, train acc:0.45, test acc:0.3874 ===\n",
      "train loss:2.101098188380654\n",
      "train loss:2.124035932712708\n",
      "train loss:2.1366238043460486\n",
      "=== epoch:143, train acc:0.45666666666666667, test acc:0.3868 ===\n",
      "train loss:2.1443311077119263\n",
      "train loss:2.108159725941991\n",
      "train loss:2.1219389535657553\n",
      "=== epoch:144, train acc:0.45666666666666667, test acc:0.3892 ===\n",
      "train loss:2.1683070400798856\n",
      "train loss:2.139433936034508\n",
      "train loss:2.135001885968475\n",
      "=== epoch:145, train acc:0.45666666666666667, test acc:0.3904 ===\n",
      "train loss:2.1155320982033508\n",
      "train loss:2.1223480695006214\n",
      "train loss:2.1378551003025175\n",
      "=== epoch:146, train acc:0.45666666666666667, test acc:0.3902 ===\n",
      "train loss:2.1375279467531865\n",
      "train loss:2.1241167695724337\n",
      "train loss:2.113377339542051\n",
      "=== epoch:147, train acc:0.4666666666666667, test acc:0.3879 ===\n",
      "train loss:2.1309895554621137\n",
      "train loss:2.0931706547667095\n",
      "train loss:2.1340132576081277\n",
      "=== epoch:148, train acc:0.45666666666666667, test acc:0.3898 ===\n",
      "train loss:2.152432064958239\n",
      "train loss:2.0965838121725753\n",
      "train loss:2.1039831944105156\n",
      "=== epoch:149, train acc:0.45, test acc:0.3908 ===\n",
      "train loss:2.0462533728807433\n",
      "train loss:2.059031732086713\n",
      "train loss:2.0807347153848146\n",
      "=== epoch:150, train acc:0.44333333333333336, test acc:0.384 ===\n",
      "train loss:2.1280715184427708\n",
      "train loss:2.0925140180667974\n",
      "train loss:2.0576458565370994\n",
      "=== epoch:151, train acc:0.45, test acc:0.3871 ===\n",
      "train loss:2.1280018843508315\n",
      "train loss:2.160442992910206\n",
      "train loss:2.1008022185034765\n",
      "=== epoch:152, train acc:0.44666666666666666, test acc:0.3904 ===\n",
      "train loss:2.098586996246592\n",
      "train loss:2.1159763888016783\n",
      "train loss:2.091624709643636\n",
      "=== epoch:153, train acc:0.45, test acc:0.3929 ===\n",
      "train loss:2.0773174133382075\n",
      "train loss:2.064914807016354\n",
      "train loss:2.0918278062923763\n",
      "=== epoch:154, train acc:0.44666666666666666, test acc:0.389 ===\n",
      "train loss:2.10962288356226\n",
      "train loss:2.096860139575991\n",
      "train loss:2.1357565332694732\n",
      "=== epoch:155, train acc:0.44333333333333336, test acc:0.3926 ===\n",
      "train loss:2.1398052984944593\n",
      "train loss:2.0466416782852694\n",
      "train loss:2.077260075471273\n",
      "=== epoch:156, train acc:0.44666666666666666, test acc:0.3923 ===\n",
      "train loss:2.1271987543927064\n",
      "train loss:2.1138812245651475\n",
      "train loss:2.061120001211363\n",
      "=== epoch:157, train acc:0.44666666666666666, test acc:0.393 ===\n",
      "train loss:2.1518432999138692\n",
      "train loss:2.034260345135058\n",
      "train loss:2.0527737534296198\n",
      "=== epoch:158, train acc:0.45666666666666667, test acc:0.3908 ===\n",
      "train loss:2.0941943321614414\n",
      "train loss:2.078801108802434\n",
      "train loss:2.0251158183112823\n",
      "=== epoch:159, train acc:0.45, test acc:0.3902 ===\n",
      "train loss:2.1033751337295317\n",
      "train loss:2.1066316785908\n",
      "train loss:2.0670782845871827\n",
      "=== epoch:160, train acc:0.45, test acc:0.3927 ===\n",
      "train loss:2.0746197611915975\n",
      "train loss:2.0876931390868623\n",
      "train loss:2.1022931709140935\n",
      "=== epoch:161, train acc:0.44333333333333336, test acc:0.3927 ===\n",
      "train loss:2.1273588667239367\n",
      "train loss:2.100868865876618\n",
      "train loss:2.0739182826992377\n",
      "=== epoch:162, train acc:0.44333333333333336, test acc:0.3962 ===\n",
      "train loss:2.057902549483993\n",
      "train loss:2.0827354735156005\n",
      "train loss:2.0443928319339366\n",
      "=== epoch:163, train acc:0.44666666666666666, test acc:0.394 ===\n",
      "train loss:2.075807500145573\n",
      "train loss:2.0819409176657677\n",
      "train loss:2.049014744346228\n",
      "=== epoch:164, train acc:0.44333333333333336, test acc:0.396 ===\n",
      "train loss:2.0938133360798177\n",
      "train loss:2.0916268062626053\n",
      "train loss:2.0502706574372422\n",
      "=== epoch:165, train acc:0.44, test acc:0.3948 ===\n",
      "train loss:2.054918192231042\n",
      "train loss:2.066558342970933\n",
      "train loss:2.053727853068373\n",
      "=== epoch:166, train acc:0.44, test acc:0.3968 ===\n",
      "train loss:2.0964865254587233\n",
      "train loss:2.037504593588993\n",
      "train loss:2.0218745362217394\n",
      "=== epoch:167, train acc:0.43666666666666665, test acc:0.4004 ===\n",
      "train loss:2.0551480273505502\n",
      "train loss:2.015533003681025\n",
      "train loss:2.035179655852117\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "=== epoch:168, train acc:0.44, test acc:0.3998 ===\n",
      "train loss:2.02777676050294\n",
      "train loss:1.9954869285011652\n",
      "train loss:2.0471463310074904\n",
      "=== epoch:169, train acc:0.44, test acc:0.399 ===\n",
      "train loss:2.007158267401156\n",
      "train loss:2.019680031901701\n",
      "train loss:2.0438991397905655\n",
      "=== epoch:170, train acc:0.44, test acc:0.3992 ===\n",
      "train loss:2.023541645525206\n",
      "train loss:2.0386408683961257\n",
      "train loss:2.0654102480464784\n",
      "=== epoch:171, train acc:0.44333333333333336, test acc:0.4032 ===\n",
      "train loss:1.9897188547629725\n",
      "train loss:2.038624261831954\n",
      "train loss:2.0407669782064217\n",
      "=== epoch:172, train acc:0.44333333333333336, test acc:0.4037 ===\n",
      "train loss:2.0498119646068815\n",
      "train loss:2.0350356577968616\n",
      "train loss:2.0761247587405287\n",
      "=== epoch:173, train acc:0.43333333333333335, test acc:0.4042 ===\n",
      "train loss:2.0803309876986837\n",
      "train loss:2.051525099399511\n",
      "train loss:2.0211829916862287\n",
      "=== epoch:174, train acc:0.44, test acc:0.4062 ===\n",
      "train loss:2.0332418297572614\n",
      "train loss:2.0623348983009624\n",
      "train loss:2.021417165350124\n",
      "=== epoch:175, train acc:0.44, test acc:0.4083 ===\n",
      "train loss:2.047371705254688\n",
      "train loss:2.029928195842677\n",
      "train loss:2.021011148135587\n",
      "=== epoch:176, train acc:0.43666666666666665, test acc:0.4086 ===\n",
      "train loss:2.0137323536460734\n",
      "train loss:2.03897632051655\n",
      "train loss:2.0383241187858836\n",
      "=== epoch:177, train acc:0.43666666666666665, test acc:0.4094 ===\n",
      "train loss:2.0142065257331465\n",
      "train loss:2.0033642710667405\n",
      "train loss:2.0206216415655884\n",
      "=== epoch:178, train acc:0.43666666666666665, test acc:0.4108 ===\n",
      "train loss:1.977980921078707\n",
      "train loss:2.0087095240715076\n",
      "train loss:2.0033801869486907\n",
      "=== epoch:179, train acc:0.43666666666666665, test acc:0.4077 ===\n",
      "train loss:1.9751918706491056\n",
      "train loss:2.0045653061548228\n",
      "train loss:1.9148476467287876\n",
      "=== epoch:180, train acc:0.44333333333333336, test acc:0.403 ===\n",
      "train loss:2.014534202213332\n",
      "train loss:2.064494366202023\n",
      "train loss:1.9287814722671632\n",
      "=== epoch:181, train acc:0.43666666666666665, test acc:0.4057 ===\n",
      "train loss:2.055677690436188\n",
      "train loss:2.006086124250957\n",
      "train loss:1.9963694353866686\n",
      "=== epoch:182, train acc:0.44, test acc:0.4074 ===\n",
      "train loss:1.9429176200327398\n",
      "train loss:1.9875168670896814\n",
      "train loss:1.9800854565981652\n",
      "=== epoch:183, train acc:0.44666666666666666, test acc:0.4091 ===\n",
      "train loss:1.9169457607267884\n",
      "train loss:1.98503516694073\n",
      "train loss:1.9509415701204795\n",
      "=== epoch:184, train acc:0.45, test acc:0.4091 ===\n",
      "train loss:1.9575115291652816\n",
      "train loss:1.9245818499354723\n",
      "train loss:2.0262404744537768\n",
      "=== epoch:185, train acc:0.45, test acc:0.4138 ===\n",
      "train loss:1.9526357781296249\n",
      "train loss:1.941359954732676\n",
      "train loss:1.9951522530022183\n",
      "=== epoch:186, train acc:0.44333333333333336, test acc:0.4119 ===\n",
      "train loss:1.9427917026063546\n",
      "train loss:1.9542198599564429\n",
      "train loss:1.935156474716747\n",
      "=== epoch:187, train acc:0.44, test acc:0.4124 ===\n",
      "train loss:1.9270971131990586\n",
      "train loss:1.9928636623428357\n",
      "train loss:1.925650786251708\n",
      "=== epoch:188, train acc:0.44333333333333336, test acc:0.4132 ===\n",
      "train loss:2.0149613580193546\n",
      "train loss:1.8836256304732948\n",
      "train loss:1.9714604402081397\n",
      "=== epoch:189, train acc:0.44666666666666666, test acc:0.4125 ===\n",
      "train loss:1.9598276210347712\n",
      "train loss:1.9052810298876697\n",
      "train loss:1.9252397972010797\n",
      "=== epoch:190, train acc:0.44666666666666666, test acc:0.4145 ===\n",
      "train loss:1.959591162584085\n",
      "train loss:1.9363401180561375\n",
      "train loss:1.9148300954782531\n",
      "=== epoch:191, train acc:0.4666666666666667, test acc:0.4178 ===\n",
      "train loss:1.8844340840831464\n",
      "train loss:1.9525096893212623\n",
      "train loss:1.9149169037087312\n",
      "=== epoch:192, train acc:0.47333333333333333, test acc:0.4176 ===\n",
      "train loss:1.9326953530332986\n",
      "train loss:1.8865541657076403\n",
      "train loss:1.9230594961582994\n",
      "=== epoch:193, train acc:0.47, test acc:0.4148 ===\n",
      "train loss:1.9274261184469959\n",
      "train loss:1.9078640871874726\n",
      "train loss:1.9833498869262658\n",
      "=== epoch:194, train acc:0.4666666666666667, test acc:0.417 ===\n",
      "train loss:1.9313291859315591\n",
      "train loss:1.896307521657915\n",
      "train loss:1.9762893066028056\n",
      "=== epoch:195, train acc:0.47333333333333333, test acc:0.4179 ===\n",
      "train loss:1.9580423821748365\n",
      "train loss:1.901553519354126\n",
      "train loss:1.8915233352224552\n",
      "=== epoch:196, train acc:0.4666666666666667, test acc:0.4184 ===\n",
      "train loss:1.9705175254822425\n",
      "train loss:1.9504743394898647\n",
      "train loss:1.870838666007347\n",
      "=== epoch:197, train acc:0.47333333333333333, test acc:0.4173 ===\n",
      "train loss:1.9591688147182815\n",
      "train loss:1.886573897652661\n",
      "train loss:1.846169089802483\n",
      "=== epoch:198, train acc:0.4766666666666667, test acc:0.413 ===\n",
      "train loss:1.9752450550660887\n",
      "train loss:1.9279310432729886\n",
      "train loss:1.8905461355905215\n",
      "=== epoch:199, train acc:0.48, test acc:0.4155 ===\n",
      "train loss:1.950778111654618\n",
      "train loss:1.9015233320937959\n",
      "train loss:1.9418147079238124\n",
      "=== epoch:200, train acc:0.48333333333333334, test acc:0.4191 ===\n",
      "train loss:1.8300807786247333\n",
      "train loss:1.9005945220309264\n",
      "train loss:1.8575884311379978\n",
      "=== epoch:201, train acc:0.48333333333333334, test acc:0.4134 ===\n",
      "train loss:1.8645621807475665\n",
      "train loss:1.8632829157000135\n",
      "train loss:1.857220657292843\n",
      "=== epoch:202, train acc:0.48333333333333334, test acc:0.413 ===\n",
      "train loss:1.842777977666421\n",
      "train loss:1.8558108283843961\n",
      "train loss:1.8618857563241389\n",
      "=== epoch:203, train acc:0.48, test acc:0.4089 ===\n",
      "train loss:1.8914576141624428\n",
      "train loss:1.7990118139169229\n",
      "train loss:1.8196530757508762\n",
      "=== epoch:204, train acc:0.47333333333333333, test acc:0.409 ===\n",
      "train loss:1.867611775058644\n",
      "train loss:1.8798765736049257\n",
      "train loss:1.859690752498154\n",
      "=== epoch:205, train acc:0.4666666666666667, test acc:0.4088 ===\n",
      "train loss:1.7646793023277079\n",
      "train loss:1.8208024555389195\n",
      "train loss:1.9342921726792377\n",
      "=== epoch:206, train acc:0.47, test acc:0.4079 ===\n",
      "train loss:1.8660081824196146\n",
      "train loss:1.846493864913509\n",
      "train loss:1.8691886422957227\n",
      "=== epoch:207, train acc:0.47, test acc:0.4107 ===\n",
      "train loss:1.832397724979256\n",
      "train loss:1.877745048515757\n",
      "train loss:1.7747516688550997\n",
      "=== epoch:208, train acc:0.4766666666666667, test acc:0.4091 ===\n",
      "train loss:1.820051030791834\n",
      "train loss:1.8312395827256154\n",
      "train loss:1.7935564972081548\n",
      "=== epoch:209, train acc:0.47, test acc:0.4153 ===\n",
      "train loss:1.8492403374737152\n",
      "train loss:1.822618990457857\n",
      "train loss:1.843782872067823\n",
      "=== epoch:210, train acc:0.46, test acc:0.4135 ===\n",
      "train loss:1.7742450679035315\n",
      "train loss:1.850516682305995\n",
      "train loss:1.789392774281537\n",
      "=== epoch:211, train acc:0.45666666666666667, test acc:0.4125 ===\n",
      "train loss:1.9220183179783887\n",
      "train loss:1.8207815471511883\n",
      "train loss:1.8226273358066607\n",
      "=== epoch:212, train acc:0.4633333333333333, test acc:0.4131 ===\n",
      "train loss:1.8577775713397826\n",
      "train loss:1.7539285851482276\n",
      "train loss:1.7547830911893998\n",
      "=== epoch:213, train acc:0.4866666666666667, test acc:0.4179 ===\n",
      "train loss:1.8245145351409362\n",
      "train loss:1.797542369041081\n",
      "train loss:1.8167668823991128\n",
      "=== epoch:214, train acc:0.5, test acc:0.4223 ===\n",
      "train loss:1.8483830606471856\n",
      "train loss:1.8072109241329826\n",
      "train loss:1.8104595973574447\n",
      "=== epoch:215, train acc:0.5, test acc:0.4258 ===\n",
      "train loss:1.7782315057253288\n",
      "train loss:1.8301827607143832\n",
      "train loss:1.7842288164253786\n",
      "=== epoch:216, train acc:0.49, test acc:0.4233 ===\n",
      "train loss:1.8171813232622063\n",
      "train loss:1.7611317794847363\n",
      "train loss:1.750040928142011\n",
      "=== epoch:217, train acc:0.5066666666666667, test acc:0.4261 ===\n",
      "train loss:1.8184046546744748\n",
      "train loss:1.7819159495325605\n",
      "train loss:1.9197541073097069\n",
      "=== epoch:218, train acc:0.5066666666666667, test acc:0.4283 ===\n",
      "train loss:1.8130046946380276\n",
      "train loss:1.7514756346580853\n",
      "train loss:1.8135730920659408\n",
      "=== epoch:219, train acc:0.49, test acc:0.424 ===\n",
      "train loss:1.7217635542645116\n",
      "train loss:1.7841904500280925\n",
      "train loss:1.7790818643266793\n",
      "=== epoch:220, train acc:0.5066666666666667, test acc:0.4259 ===\n",
      "train loss:1.7233332726601003\n",
      "train loss:1.7383108542998535\n",
      "train loss:1.870394268220762\n",
      "=== epoch:221, train acc:0.49333333333333335, test acc:0.426 ===\n",
      "train loss:1.793811859143718\n",
      "train loss:1.818474172555594\n",
      "train loss:1.8476263943131839\n",
      "=== epoch:222, train acc:0.48, test acc:0.422 ===\n",
      "train loss:1.7777279522181226\n",
      "train loss:1.8740919309898383\n",
      "train loss:1.7469807236200285\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "=== epoch:223, train acc:0.48333333333333334, test acc:0.4294 ===\n",
      "train loss:1.7741407190333935\n",
      "train loss:1.7308553822179977\n",
      "train loss:1.7359189374766513\n",
      "=== epoch:224, train acc:0.5033333333333333, test acc:0.4309 ===\n",
      "train loss:1.762486534794455\n",
      "train loss:1.8467127752177652\n",
      "train loss:1.7533127428808475\n",
      "=== epoch:225, train acc:0.52, test acc:0.4384 ===\n",
      "train loss:1.679318630236455\n",
      "train loss:1.7666683786479047\n",
      "train loss:1.7331372069279742\n",
      "=== epoch:226, train acc:0.49666666666666665, test acc:0.4327 ===\n",
      "train loss:1.7741845021402218\n",
      "train loss:1.7018020943266992\n",
      "train loss:1.7487558239244558\n",
      "=== epoch:227, train acc:0.49, test acc:0.4311 ===\n",
      "train loss:1.8353430428076456\n",
      "train loss:1.7788529710701086\n",
      "train loss:1.7131272572071783\n",
      "=== epoch:228, train acc:0.48333333333333334, test acc:0.4302 ===\n",
      "train loss:1.673878560815935\n",
      "train loss:1.8184860715871896\n",
      "train loss:1.7973784174688354\n",
      "=== epoch:229, train acc:0.49666666666666665, test acc:0.4327 ===\n",
      "train loss:1.7446780964128228\n",
      "train loss:1.674511463667378\n",
      "train loss:1.6152701914654812\n",
      "=== epoch:230, train acc:0.49, test acc:0.4315 ===\n",
      "train loss:1.8026853813262615\n",
      "train loss:1.6662907786239154\n",
      "train loss:1.731016611454802\n",
      "=== epoch:231, train acc:0.49333333333333335, test acc:0.4352 ===\n",
      "train loss:1.7072513246013312\n",
      "train loss:1.7122300728229591\n",
      "train loss:1.6710126319590122\n",
      "=== epoch:232, train acc:0.49333333333333335, test acc:0.4331 ===\n",
      "train loss:1.6650698334596734\n",
      "train loss:1.6908611137696423\n",
      "train loss:1.7398701609513358\n",
      "=== epoch:233, train acc:0.5033333333333333, test acc:0.4377 ===\n",
      "train loss:1.6656462651299797\n",
      "train loss:1.7402747994218835\n",
      "train loss:1.6493511023170604\n",
      "=== epoch:234, train acc:0.49333333333333335, test acc:0.4286 ===\n",
      "train loss:1.7219060647347384\n",
      "train loss:1.7244739086984606\n",
      "train loss:1.6406168484874946\n",
      "=== epoch:235, train acc:0.51, test acc:0.4432 ===\n",
      "train loss:1.7250578616860526\n",
      "train loss:1.6507604640074138\n",
      "train loss:1.5605757735938883\n",
      "=== epoch:236, train acc:0.5333333333333333, test acc:0.4486 ===\n",
      "train loss:1.677789620505023\n",
      "train loss:1.6627749568294694\n",
      "train loss:1.59840089126366\n",
      "=== epoch:237, train acc:0.51, test acc:0.4407 ===\n",
      "train loss:1.7206883103181332\n",
      "train loss:1.5928898180776798\n",
      "train loss:1.6919794053540107\n",
      "=== epoch:238, train acc:0.49333333333333335, test acc:0.4325 ===\n",
      "train loss:1.6894141185291238\n",
      "train loss:1.6537303511603534\n",
      "train loss:1.647166351601261\n",
      "=== epoch:239, train acc:0.52, test acc:0.4441 ===\n",
      "train loss:1.6970917535883787\n",
      "train loss:1.716101295538798\n",
      "train loss:1.6764538367044821\n",
      "=== epoch:240, train acc:0.5366666666666666, test acc:0.451 ===\n",
      "train loss:1.6645877383784837\n",
      "train loss:1.673191829723802\n",
      "train loss:1.6365851975911527\n",
      "=== epoch:241, train acc:0.5133333333333333, test acc:0.4415 ===\n",
      "train loss:1.6741482315287886\n",
      "train loss:1.6389485658195966\n",
      "train loss:1.6352629290936898\n",
      "=== epoch:242, train acc:0.49666666666666665, test acc:0.4286 ===\n",
      "train loss:1.6978678579701962\n",
      "train loss:1.6889817233757123\n",
      "train loss:1.6914640919799877\n",
      "=== epoch:243, train acc:0.49666666666666665, test acc:0.4281 ===\n",
      "train loss:1.6862669576835225\n",
      "train loss:1.6165370654173705\n",
      "train loss:1.6649623454183107\n",
      "=== epoch:244, train acc:0.5, test acc:0.4341 ===\n",
      "train loss:1.6414083209452022\n",
      "train loss:1.6727048422728183\n",
      "train loss:1.616052031273091\n",
      "=== epoch:245, train acc:0.5033333333333333, test acc:0.4439 ===\n",
      "train loss:1.5668403469363332\n",
      "train loss:1.6554359843235216\n",
      "train loss:1.7121816924599844\n",
      "=== epoch:246, train acc:0.5, test acc:0.4376 ===\n",
      "train loss:1.6410668080226634\n",
      "train loss:1.6424095887291785\n",
      "train loss:1.6557573441081093\n",
      "=== epoch:247, train acc:0.5133333333333333, test acc:0.4531 ===\n",
      "train loss:1.6290497873123793\n",
      "train loss:1.6461023076551098\n",
      "train loss:1.4891485004469993\n",
      "=== epoch:248, train acc:0.5566666666666666, test acc:0.4625 ===\n",
      "train loss:1.6411635739163197\n",
      "train loss:1.5354199962696407\n",
      "train loss:1.557030544975687\n",
      "=== epoch:249, train acc:0.52, test acc:0.4535 ===\n",
      "train loss:1.652967490839173\n",
      "train loss:1.551134512343705\n",
      "train loss:1.6053992887760455\n",
      "=== epoch:250, train acc:0.5033333333333333, test acc:0.4464 ===\n",
      "train loss:1.6068489138783648\n",
      "train loss:1.565725181200798\n",
      "train loss:1.5566740968171537\n",
      "=== epoch:251, train acc:0.5066666666666667, test acc:0.4472 ===\n",
      "train loss:1.59137323236664\n",
      "train loss:1.5950283558827427\n",
      "train loss:1.5674916227883933\n",
      "=== epoch:252, train acc:0.5566666666666666, test acc:0.4651 ===\n",
      "train loss:1.5557180635647618\n",
      "train loss:1.6171362542105188\n",
      "train loss:1.5777569887467993\n",
      "=== epoch:253, train acc:0.56, test acc:0.4712 ===\n",
      "train loss:1.571914668894744\n",
      "train loss:1.4533917408104824\n",
      "train loss:1.4820092613305413\n",
      "=== epoch:254, train acc:0.5533333333333333, test acc:0.4651 ===\n",
      "train loss:1.535669248793471\n",
      "train loss:1.4810216017360438\n",
      "train loss:1.6123482276179453\n",
      "=== epoch:255, train acc:0.56, test acc:0.471 ===\n",
      "train loss:1.592633110769394\n",
      "train loss:1.6143174254657482\n",
      "train loss:1.5799264283616667\n",
      "=== epoch:256, train acc:0.5633333333333334, test acc:0.473 ===\n",
      "train loss:1.5158534446366219\n",
      "train loss:1.5087431923654526\n",
      "train loss:1.6173407969548885\n",
      "=== epoch:257, train acc:0.5633333333333334, test acc:0.4752 ===\n",
      "train loss:1.5193418445125229\n",
      "train loss:1.6235563825453727\n",
      "train loss:1.5225828960312677\n",
      "=== epoch:258, train acc:0.5466666666666666, test acc:0.4598 ===\n",
      "train loss:1.6171307885078547\n",
      "train loss:1.5738162623050302\n",
      "train loss:1.512173787840327\n",
      "=== epoch:259, train acc:0.5733333333333334, test acc:0.4742 ===\n",
      "train loss:1.5749742612837145\n",
      "train loss:1.5639132160645774\n",
      "train loss:1.5411760268868107\n",
      "=== epoch:260, train acc:0.5566666666666666, test acc:0.4647 ===\n",
      "train loss:1.4755062051959031\n",
      "train loss:1.627487848036445\n",
      "train loss:1.4739690727657222\n",
      "=== epoch:261, train acc:0.57, test acc:0.478 ===\n",
      "train loss:1.4721292341994328\n",
      "train loss:1.6493895927782316\n",
      "train loss:1.4335289284370374\n",
      "=== epoch:262, train acc:0.5766666666666667, test acc:0.4777 ===\n",
      "train loss:1.4161187134526798\n",
      "train loss:1.6298070299037426\n",
      "train loss:1.5734486764539504\n",
      "=== epoch:263, train acc:0.5666666666666667, test acc:0.4723 ===\n",
      "train loss:1.4816775332675969\n",
      "train loss:1.619283895613434\n",
      "train loss:1.474014164036155\n",
      "=== epoch:264, train acc:0.5733333333333334, test acc:0.4822 ===\n",
      "train loss:1.5086682193220948\n",
      "train loss:1.4334583647295949\n",
      "train loss:1.4993689409169035\n",
      "=== epoch:265, train acc:0.5733333333333334, test acc:0.4825 ===\n",
      "train loss:1.5631622916636332\n",
      "train loss:1.5782938644166842\n",
      "train loss:1.4329947140267143\n",
      "=== epoch:266, train acc:0.58, test acc:0.4873 ===\n",
      "train loss:1.3382237362040597\n",
      "train loss:1.4986726000785922\n",
      "train loss:1.4843304994665687\n",
      "=== epoch:267, train acc:0.5766666666666667, test acc:0.4833 ===\n",
      "train loss:1.6130821077850763\n",
      "train loss:1.4870125293465173\n",
      "train loss:1.546297870214963\n",
      "=== epoch:268, train acc:0.5766666666666667, test acc:0.4852 ===\n",
      "train loss:1.464256099834059\n",
      "train loss:1.4790893646741696\n",
      "train loss:1.4766641567898346\n",
      "=== epoch:269, train acc:0.5833333333333334, test acc:0.4868 ===\n",
      "train loss:1.5095672909097857\n",
      "train loss:1.3948905955624522\n",
      "train loss:1.4228403947655315\n",
      "=== epoch:270, train acc:0.57, test acc:0.483 ===\n",
      "train loss:1.5079103566123526\n",
      "train loss:1.5375118476420022\n",
      "train loss:1.3578827628824612\n",
      "=== epoch:271, train acc:0.5733333333333334, test acc:0.4867 ===\n",
      "train loss:1.401471125875385\n",
      "train loss:1.4280435738787174\n",
      "train loss:1.4363153237768054\n",
      "=== epoch:272, train acc:0.5766666666666667, test acc:0.4859 ===\n",
      "train loss:1.5223869237780152\n",
      "train loss:1.554343801146204\n",
      "train loss:1.5082122620593104\n",
      "=== epoch:273, train acc:0.59, test acc:0.4907 ===\n",
      "train loss:1.5371317073126411\n",
      "train loss:1.4988406429185384\n",
      "train loss:1.4175032235062508\n",
      "=== epoch:274, train acc:0.5933333333333334, test acc:0.4942 ===\n",
      "train loss:1.473834419853465\n",
      "train loss:1.5093097114877316\n",
      "train loss:1.4571470957453696\n",
      "=== epoch:275, train acc:0.6033333333333334, test acc:0.4969 ===\n",
      "train loss:1.4183248238386599\n",
      "train loss:1.504413793452059\n",
      "train loss:1.499105050676706\n",
      "=== epoch:276, train acc:0.6, test acc:0.4968 ===\n",
      "train loss:1.456045457687198\n",
      "train loss:1.4341013421511157\n",
      "train loss:1.4795979896805276\n",
      "=== epoch:277, train acc:0.6, test acc:0.4938 ===\n",
      "train loss:1.4654630753012583\n",
      "train loss:1.4196629915362933\n",
      "train loss:1.3546461725832861\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "=== epoch:278, train acc:0.5933333333333334, test acc:0.4919 ===\n",
      "train loss:1.4177387462587936\n",
      "train loss:1.4495415994887066\n",
      "train loss:1.3773346834009441\n",
      "=== epoch:279, train acc:0.5966666666666667, test acc:0.4977 ===\n",
      "train loss:1.4874455705661296\n",
      "train loss:1.4680705255888642\n",
      "train loss:1.3594247465218399\n",
      "=== epoch:280, train acc:0.6, test acc:0.4957 ===\n",
      "train loss:1.4373803402344303\n",
      "train loss:1.4330509941201774\n",
      "train loss:1.3742748764445485\n",
      "=== epoch:281, train acc:0.6, test acc:0.4914 ===\n",
      "train loss:1.424484748268644\n",
      "train loss:1.4115341736840485\n",
      "train loss:1.3863970751832353\n",
      "=== epoch:282, train acc:0.59, test acc:0.4988 ===\n",
      "train loss:1.3886332871079259\n",
      "train loss:1.5026456043581424\n",
      "train loss:1.40121877667415\n",
      "=== epoch:283, train acc:0.5933333333333334, test acc:0.4966 ===\n",
      "train loss:1.4306937805670736\n",
      "train loss:1.426960476907828\n",
      "train loss:1.3999847687056157\n",
      "=== epoch:284, train acc:0.5966666666666667, test acc:0.4857 ===\n",
      "train loss:1.385624918715513\n",
      "train loss:1.353771328374431\n",
      "train loss:1.4269586612435217\n",
      "=== epoch:285, train acc:0.58, test acc:0.4753 ===\n",
      "train loss:1.571309267047668\n",
      "train loss:1.4121920467769962\n",
      "train loss:1.4098266044008343\n",
      "=== epoch:286, train acc:0.6033333333333334, test acc:0.4885 ===\n",
      "train loss:1.4831728094196512\n",
      "train loss:1.2720067604376368\n",
      "train loss:1.4497760972411324\n",
      "=== epoch:287, train acc:0.5866666666666667, test acc:0.4827 ===\n",
      "train loss:1.307477334386504\n",
      "train loss:1.4911581171653339\n",
      "train loss:1.3161644326737303\n",
      "=== epoch:288, train acc:0.5866666666666667, test acc:0.4833 ===\n",
      "train loss:1.3770499741558277\n",
      "train loss:1.3185919077569057\n",
      "train loss:1.337747900018928\n",
      "=== epoch:289, train acc:0.59, test acc:0.4855 ===\n",
      "train loss:1.3740976353050096\n",
      "train loss:1.4639299329243831\n",
      "train loss:1.3492933108862957\n",
      "=== epoch:290, train acc:0.6066666666666667, test acc:0.4867 ===\n",
      "train loss:1.3357165473592982\n",
      "train loss:1.4209524349730414\n",
      "train loss:1.3771602757370605\n",
      "=== epoch:291, train acc:0.62, test acc:0.4922 ===\n",
      "train loss:1.40683593883075\n",
      "train loss:1.3431064639808432\n",
      "train loss:1.296863278973989\n",
      "=== epoch:292, train acc:0.62, test acc:0.4929 ===\n",
      "train loss:1.2844634397296733\n",
      "train loss:1.2937121666776021\n",
      "train loss:1.322106904606295\n",
      "=== epoch:293, train acc:0.62, test acc:0.4976 ===\n",
      "train loss:1.3173026281254965\n",
      "train loss:1.3971053014099055\n",
      "train loss:1.297260206458646\n",
      "=== epoch:294, train acc:0.6166666666666667, test acc:0.5024 ===\n",
      "train loss:1.416798614591589\n",
      "train loss:1.3090777540255283\n",
      "train loss:1.4210320372986371\n",
      "=== epoch:295, train acc:0.62, test acc:0.5059 ===\n",
      "train loss:1.2966095863312261\n",
      "train loss:1.2597509672294676\n",
      "train loss:1.3968764080262155\n",
      "=== epoch:296, train acc:0.6133333333333333, test acc:0.4951 ===\n",
      "train loss:1.3612764802208508\n",
      "train loss:1.3796447838055768\n",
      "train loss:1.2449598732714953\n",
      "=== epoch:297, train acc:0.6066666666666667, test acc:0.4877 ===\n",
      "train loss:1.2323589562898105\n",
      "train loss:1.2817439642982975\n",
      "train loss:1.286438896643415\n",
      "=== epoch:298, train acc:0.61, test acc:0.4853 ===\n",
      "train loss:1.4301556343895643\n",
      "train loss:1.2526963047378734\n",
      "train loss:1.3019222878447625\n",
      "=== epoch:299, train acc:0.6033333333333334, test acc:0.4795 ===\n",
      "train loss:1.345781221223121\n",
      "train loss:1.3438256699449875\n",
      "train loss:1.3374595083294645\n",
      "=== epoch:300, train acc:0.6033333333333334, test acc:0.4865 ===\n",
      "train loss:1.3646001955007088\n",
      "train loss:1.3345863829351094\n",
      "train loss:1.3067877385578313\n",
      "=== epoch:301, train acc:0.63, test acc:0.507 ===\n",
      "train loss:1.295715796220709\n",
      "train loss:1.354691101742228\n",
      "=============== Final Test Accuracy ===============\n",
      "test acc:0.5049\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# coding: utf-8\n",
    "import os\n",
    "import sys\n",
    "sys.path.append(os.pardir)  # 为了导入父目录的文件而进行的设定\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from dataset.mnist import load_mnist\n",
    "from common.multi_layer_net_extend import MultiLayerNetExtend\n",
    "from common.trainer import Trainer\n",
    "\n",
    "(x_train, t_train), (x_test, t_test) = load_mnist(normalize=True)\n",
    "\n",
    "# 为了再现过拟合，减少学习数据\n",
    "x_train = x_train[:300]\n",
    "t_train = t_train[:300]\n",
    "\n",
    "# 设定是否使用Dropuout，以及比例 ========================\n",
    "use_dropout = True  # 不使用Dropout的情况下为False\n",
    "dropout_ratio = 0.2\n",
    "# ====================================================\n",
    "\n",
    "network = MultiLayerNetExtend(input_size=784, hidden_size_list=[100, 100, 100, 100, 100, 100],\n",
    "                              output_size=10, use_dropout=use_dropout, dropout_ration=dropout_ratio)\n",
    "trainer = Trainer(network, x_train, t_train, x_test, t_test,\n",
    "                  epochs=301, mini_batch_size=100,\n",
    "                  optimizer='sgd', optimizer_param={'lr': 0.01}, verbose=True)\n",
    "trainer.train()\n",
    "\n",
    "train_acc_list, test_acc_list = trainer.train_acc_list, trainer.test_acc_list\n",
    "\n",
    "# 绘制图形==========\n",
    "markers = {'train': 'o', 'test': 's'}\n",
    "x = np.arange(len(train_acc_list))\n",
    "plt.plot(x, train_acc_list, marker='o', label='train', markevery=10)\n",
    "plt.plot(x, test_acc_list, marker='s', label='test', markevery=10)\n",
    "plt.xlabel(\"epochs\")\n",
    "plt.ylabel(\"accuracy\")\n",
    "plt.ylim(0, 1.0)\n",
    "plt.legend(loc='lower right')\n",
    "plt.show()"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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b7a9e/eWpOarrUJACAgBIZAPAiIi+QCkn4WAEBACQqB4EBARKR7cdVUhIASEQLoQEBFJF9K6jhAQAkJACERCQEQkElyqLASEgBAocQiIiJS4LlODhYAQEAJFgwAxF9OnT7dXX33V7rrrLrvuuuusatWq9vrrr7vvd+/ebTNmzLDatWtbmzZt7IMPPrD777/f1cNlqlevXrZ69eo8jVmyZIn7vlq1anbttdfarbfeai1btrTvvvsuT709e/bYwoUL3bXuvfdeu/76661y5crWqFEj++abb2znzp3micgll1xiw4cPtyeeeMJuueUWq1KlimszLzDOQ9m4caMNHTrU6tSpYzfddJM73913323t27e3BQsW2M8//5zn+vpHCAgBISAEih8BEZHi7wO1QAgIASFQLAhMmDDBEQxIQ4MGDezpp5+2xx57zMVlNG3a1ObNm2cjR460cuXK2TnnnGN169a1Jk2a2JNPPulIA4SAQHIfu7F+/Xp76623HPmAXDRs2NAeffRRu/322x1BmDJlikFuKHyG3EBWatas6c7ZuHFja926tX388ce2ffv2XCJywgknuHM988wz7voQDEjLK6+8Ylu2bHHn+/rrr921brvtNncu2v/UU0/Zyy+/nEuqigVkXVQICAEhIATiIiAiEhca/SAEhIAQyF4EsCS0bdvWWUJatGjhlPWVK1ca5KR+/frO6vHuu+86KwNEpGzZso4EYEHB6vHOO+/YDTfcYCj+y5Ytc5aJb7/91pGYq666yvr37+/qjR8/3lk5KlSo4IgHQeeQjE6dOtnll1/u6mMBWbx4sS1atMgmT55sHLNr165cInL00Uc7gvTDDz+4er1793Zk5+KLLzYya2HZwapz4YUXWvPmzW3u3LnGvcyePdsmTZpky5cvz7WcZG+P6s6EgBAQAiUPARGRktdnarEQEAJCoFAIYMH48ccfrVKlSoZ14auvvnJuUrhKsWHVwIqB+9UXX3zhLCK4bo0dOzb3ulu3bnVK/0UXXWT9+vVz5OK5555zlopWrVrl1uPDsGHDrEaNGkZdXLkgMrVq1XL/Qy4gHbGKd82CYIwbNy63Hq5WuHsdccQRNn/+fEcysHxceuml1qFDB/fdunXrjDZ6161Y59d3QkAICAEhULwIiIgUL/66uhAQAkIg7QjgHoWSj+L+pz/9yQ4//HCn1KPYsx10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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Dropout 的实验和前面的实验一样，使用7层网络（每层有100个神经元，激活函数为 ReLU）,使用 Dropout，结果如图。\n",
    "![image.png](attachment:image.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "通过使用 Dropout，训练数据和测试数据的识别精度的差距变小了。并且，训练数据也没有到达100%的识别精度。像这样，通过使用 Dropout，即使是表现力强的网络，也可以抑制过拟合。\n",
    "\n",
    "\n",
    "---\n",
    "\n",
    "机器学习中经常使用集成学习。所谓集成学习，就是让多个模型单独进行学习，推理时再取多个模型的输出的平均值。<br>\n",
    "用神经网络的语境来说，比如，准备5个结构相同（或者类似）的网络，分别进行学习，测试时，以这5个网络的输出的平均值作为答案。<br>\n",
    "通过进行集成学习，神经网络的识别精度可以提高好几个百分点。<br>\n",
    "集成学习与 Dropout 有密切的关系。这是因为可以将 Dropout 理解为，通过在学习过程中随机删除神经元，从而每一次都让不同的模型进行学习。并且，推理时，通过对神经元的输出乘以删除比例（比如，0.5等），可以取得模型的平均值。也就是说，可以理解成，Dropout 将集成学习的效果（模拟地）通过一个网络实现了。\n",
    "\n",
    "---"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
